Php 编码点火器';s activerecord set()方法将我的值视为列名
我正在研究codeigniter框架。在其中,我必须编辑数据库中具有特定列的行 我尝试了以下代码,但它给了我错误: “字段列表”中的未知列“Vendor_1360622286”Php 编码点火器';s activerecord set()方法将我的值视为列名,php,mysql,codeigniter,activerecord,sql-update,Php,Mysql,Codeigniter,Activerecord,Sql Update,我正在研究codeigniter框架。在其中,我必须编辑数据库中具有特定列的行 我尝试了以下代码,但它给了我错误: “字段列表”中的未知列“Vendor_1360622286” UPDATE `vendors` SET vendor_id = Vendor_1360622286, vendor_name = fsd, vendor_address = fds, vendor_phone = fsdf, vendor_email = sdfsdfsd WHERE `
UPDATE `vendors`
SET vendor_id = Vendor_1360622286,
vendor_name = fsd,
vendor_address = fds,
vendor_phone = fsdf,
vendor_email = sdfsdfsd
WHERE `vendor_id` = 'Vendor_1360622286'
代码:
$this->db->set('vendor_id', $data['vendor_id'], FALSE);
$this->db->set('vendor_name', $data['vendor_name'], FALSE);
$this->db->set('vendor_address', $data['vendor_address'], FALSE);
$this->db->set('vendor_phone', $data['vendor_phone'], FALSE);
$this->db->set('vendor_email', $data['vendor_email'], FALSE);
$this->db->where('vendor_id', $data['vendor_id']);
$status = $this->db->update('vendors');
知道它为什么会给我错误吗?试试下面的代码:
$update_data=array("vendor_id"=> $data['vendor_id'],"vendor_name"=> $data['vendor_name'],"vendor_address"=> $data['vendor_address'],"vendor_phone"=> $data['vendor_phone'],"vendor_email"=> $data['vendor_email']);
$condi=array("vendor_id"=>$data['vendor_id']);
$this->db->where($condi);
$res=$this->db->update("vendors",$update_data);
if($res)
echo "Recored Updated";
else
echo "Not Updated";
您正在将第三个参数作为
FALSE
传递给set()
,因此它不能正确地转义字符串值。查询应该是updatevendors SET vendor\u id='vendor\u 1360622286',vendor\u name='fsd',vendor\u address='fds',vendor\u phone='fsdf',vendor\u email='sdfsdfsd',其中vendor\u id='vendor\u 1360622286'
只需从调用中删除FALSE
参数,就可以了。尝试以下操作:
public function update($data)
{
$db = $this->db;
$db->where('vendor_id', $data['vendor_id'])->update('vendors', $data);
if ($db->affected_rows())
{
return true;
}
else
{
return false;
}
}
数据数组必须包含id和所有要更改的信息。没有解释为什么OPs代码不起作用以及他为什么要编写此代码?