我遇到CodeIgniter UPDATE
查询问题。
我的模特:
function update_order($id,$old_order){
//Update The order
$query = $this->db->query("SELECT * FROM cat WHERE `cat_order`='$old_order' ");
$row = $query->row();
$this->db->query("UPDATE cat SET cat_order='".$row->cat_order."' WHERE id='".$id."' ");
$this->db->query("UPDATE cat SET cat_order='$old_order' WHERE id ='".$row->id."' ");
}
SELECT
查询正在100%运行,但两个UPDATE
查询却没有。
答案 0 :(得分:3)
好吧,让我们看看发生了什么(至少,我能理解的是什么);
cat
中cat_order
等于2 $old_older
)的所有内容; $row = $query->row()
); $row->cat_order
)提取的相同值,使用ID我不知道它来自哪里从哪一行开始; $row->id
)标识,并提供其$old_older
值(SET cat_order='$old_order'
),这个案例2. 我的意思是,您的查询很好,但是您使用相同的值进行更新,这就是您没有看到更改的原因。 还是我忽略了一些明显的东西?
顺便说一句,你已经注入了洞;要么使用Active Record,要么使用带占位符的查询绑定:
$sql = "UPDATE table SET column = ? WHERE id = ?";
$this->db->query($sql, array($value, $id));
答案 1 :(得分:1)
只需使用Active Record更新它。它为您清理数据。不用担心SQL注入。
$this->db->where('id',$id);
$this->db->set('cat_order',$row->cat_order);
$this->db->update('cat');
对第二次更新查询执行相同操作。
答案 2 :(得分:0)
很可能id是主键,并且必须没有引号:
$this->db->query(
"UPDATE cat SET cat_order='".$row->cat_order."' WHERE id = " .$id );
$this->db->query(
"UPDATE cat SET cat_order='$old_order' WHERE id = " . $row->id );
答案 3 :(得分:0)
检查您要更新的列是否存在于数据库结构中。