更新方法无法在codeigniter中工作

时间:2017-06-16 10:03:19

标签: php mysql codeigniter

我在通过codeigniter更新方法更新数据库中的字段时遇到问题

我的控制器:

      $database = array(
        'last_location' => $url[5]."-".$url[6],
        'last_date_location' => $url[3]." ".$url[4],
      );

      $user = $this->API_model->get_user($url[0]);

      print_r($user);

      if ($this->db->update('user', $database , $user['id']) === true) {
        print_r($database);
        echo "MEI_TRUE";
      }else {
        echo "MEI_FALSE";
      }

浏览器返回MEI_TRUE表示数据库已成功更新,但当我在 phpmyadmin 中检查数据库时,没有任何更改:(

问题是什么?

3 个答案:

答案 0 :(得分:1)

你可以试试下面这样的事吗,

$database = array(
        'last_location' => $url[5]."-".$url[6],
        'last_date_location' => $url[3]." ".$url[4],
      );
$this->db->where('id', $user['id']);
$this->db->update('user', $database );

希望这会对你有所帮助

答案 1 :(得分:1)

现在应该可以了。

$database = array(
        'last_location' => $url[5]."-".$url[6],
        'last_date_location' => $url[3]." ".$url[4],
      );

      $user = $this->API_model->get_user($url[0]);

      print_r($user);
      $query = $this->db->where('id',$user['id'])
                        ->update('user', $database);
      if ($query) {
        print_r($database);
        echo "MEI_TRUE";
      }else {
        echo "MEI_FALSE";
      }

答案 2 :(得分:1)

问题是 - 您想要更新什么? 更新查询的第3个参数允许您将where子句作为字符串

启用

虽然您的示例非常危险,但请尝试以下

if ($this->db->update('user', $database , "id = ".$user['id']) === true) 
{
    print_r($database);
    echo "MEI_TRUE";
}
else 
{
    echo "MEI_FALSE";
}

更好的方式(如Dhanesh已经提到的):

$blnUpdateSuccess = $this->db->where("id", $user['id'])->update("user",$database);

if ($blnUpdateSuccess) 
{
    print_r($database);
    echo "MEI_TRUE";
}
else 
{
    echo "MEI_FALSE";
}
  

有关详细信息,请参阅文档here