Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用CodeIgniter更新数据库记录?_Php_Codeigniter - Fatal编程技术网

Php 如何使用CodeIgniter更新数据库记录?

Php 如何使用CodeIgniter更新数据库记录?,php,codeigniter,Php,Codeigniter,我正在尝试更新数据库的记录 代码如下: 在我的索引页上 <?php foreach ($news as $news_item): ?> <h2><?php echo $news_item['title'] ?></h2> <div class="main"> <?php echo $news_item['text'] ?> </div> <p><a href="news/<?ph

我正在尝试更新数据库的记录

代码如下:

在我的索引页上

<?php foreach ($news as $news_item): ?>

<h2><?php echo $news_item['title'] ?></h2>
<div class="main">
    <?php echo $news_item['text'] ?>
</div>
<p><a href="news/<?php echo $news_item['slug'] ?>">View article</a></p>
<p><a href="news/delete/<?php echo $news_item['slug'] ?>">Delete article</a></p>
<p><a href="news/update/<?php echo $news_item['slug'] ?>">Update article</a></p>
在我的news_model.php页面上

<h2>Update a news item</h2>

<?php echo validation_errors(); ?>

<?php echo form_open('news/update') ?>

<label for="title">Title</label>
<input type="input" name="title" /><br />

<label for="text">Text</label>
<textarea name="text"></textarea><br />

<input type="submit" name="submit" value="Update news item" />

</form>
    public function update($slug)
{

    $this->load->helper('url');
    $this->news_model->update_news($slug);
    redirect ('news', 'refresh');
}
    public function update_news($slug)
{

$this->load->helper('url');

$data = array(
               'title' => $title,
               'slug' => $slug,
               'text' => $this->input->post('text')
            );

$this->db->where('title', $slug);
$this->db->update('news', $data); 

}
我的路由页面

$route['news/update/(:any)'] = 'news/update/$1';    
$route['news/delete/(:any)'] = 'news/delete/$1';
$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
我正在尝试更新用户单击的记录

但是,代码不会将slug发送到更新页面(该页面上有更新记录的表单),而是一直运行,并将记录更新为“0”值。

编辑:

经过几句评论,我现在可以看到你的问题了。这就是我将如何修复它

你的索引文件看起来不错。这是你的更新功能,在你的控制器中问题所在。您希望看到更新表单,但实际上并没有加载视图

尝试用这个函数替换该函数

public function update($slug)
{
    if (!$this->input->post('submit'))
    {
      // The form was NOT posted
      // So we load the view
      $data['selected_article'] = $this->news_model->get_by_slug($slug);
      $this->load->view('update', $data);
    }
    else
    {
      // The form was submitted
      $data = array(
        'title' => $this->input->post('title'),
        'slug' => $this->input->post('slug'),
        'text' => $this->input->post('text'),
      );

      $this->news_model->update_news($slug, $data);
    }
  }
这不应该:

$data = array(
           'title' => $title,
           'slug' => $slug,
           'text' => $this->input->post('text')
        );
是这样的:

$data = array(
           'title' => $this->input->post('title'), //-->post variable
           'slug' => $slug,
           'text' => $this->input->post('text')
        );
另外,您确定
$title
变量与
$slug
完全相同吗? 如果
$title
='My title',和
$slug
='My title',它们将不匹配,并且不会按预期运行:

$this->db->where('title', $slug);

我在我的表单模型文件中添加了一个函数,我只想更新以前上传到db中的一些记录:

public function update_records($id_aUsar){
    $data = array(
        'asunto'  =>  $this->input->post('tema'),
        'remite'  =>  $this->input->post('emite'),
        'mensaje' =>  $this->input->post('content'),
        'dirigido' => $this->input->post('paraGrupo'),
        'fechaEnvio'=> $this->input->post('fechaEnvio'),
        'observaciones' => $this->input->post('notas')
    );

    $this->db->where('id_masivos', $id_aUsar);
    $this->db->set('fecha', 'NOW()', FALSE);
    $this->db->update('masivos_texto', $data); 
}
其中,
$id\u aUsar
是我要更新的行的主键id,我从我的会话值中获取id,为了保持相同的会话(我的主键id\u masivos是类型AUTOINCREMENT),数组条目是用户更新某些字段(包括所有字段)后唯一要更新的数据,但是,只有我在函数中显示的那些是记录更新所必需的。然后在我的控制器中,我访问我的模型添加功能,如下所示:

$this->forma_model->update_records($id_tarea);

其中,
$id\u tarea
是该会话中该用户的当前会话id,这就是我在不丢失主键id的情况下更新记录的方式。

从视图页面传递$slug,该页面是正在单击的文章的id。我将编辑代码,以便您可以在上下文中看到它。如果表单是,我想将$slug(id)传递到更新页面。您正在将slug(或id)传递到表单,但您没有将其从表单传递到控制器。当您点击“更新新闻项”时,表单将进入“新闻”控制器,进入“更新”功能。然而,您还希望为slug提供ID。当我单击更新记录时,找不到页面,并且记录的值设置为0。由于某些原因,我无法导航到“更新表单”页面?在哪里加载视图$这->加载->查看()?完全正确。当我单击索引页面上的更新文章时,除了特定记录的值更改为0之外,什么也没有发生。它完全错过了更新页面。