我在通过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 中检查数据库时,没有任何更改:(
问题是什么?
答案 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