Cakephp 错误:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查手册
错误:SQLSTATE[42000]:语法错误或访问冲突:1064您 SQL语法有错误;检查相应的手册 您的MySQL服务器版本,以便在“@g.com”附近使用正确的语法, “用户”。“电话”=87665r5,“用户”。“地址”=23lsdhf, “用户”。“位置”位于第1行 SQL查询:Cakephp 错误:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查手册,cakephp,cakephp-2.0,cakephp-1.3,cakephp-2.1,cakephp-2.3,Cakephp,Cakephp 2.0,Cakephp 1.3,Cakephp 2.1,Cakephp 2.3,错误:SQLSTATE[42000]:语法错误或访问冲突:1064您 SQL语法有错误;检查相应的手册 您的MySQL服务器版本,以便在“@g.com”附近使用正确的语法, “用户”。“电话”=87665r5,“用户”。“地址”=23lsdhf, “用户”。“位置”位于第1行 SQL查询: UPDATE'cake.'users'为'User'设置'User.'username'=paul,'User.'password'=eben,'User.'email'=paul@g.com,“用户”。“电
UPDATE'cake.'users'为'User'设置'User.'username'=paul,'User.'password'=eben,'User.'email'=paul@g.com,“用户”。“电话”=87665r5,“用户”。“地址”=23lsdhf,“用户”。“位置”=lskjaflasi,“用户”。“pincode”=867567,其中“用户”。“id”=1
我的代码是
if($this->request->data)
{$User=$this->request->data[User];
$this->User->updateAll($User,array("User.id" => $v));}
如何更新整个表单?updateAll()
与使用save()
时不同,它不会自动将字符串值括在引号中。你必须自己做这件事。发件人:-
应使用DboSource::value()手动引用文字值
在调用updateAll()
之前,需要使用数据源的value()
方法将每个字符串值用引号括在$this->request->data
中:-
建议不要将$this->request->data
传递给updateAll()
,因为有人可能会将数据注入数据库。而是根据请求数据构建一个新的save数据数组,并根据需要包装字符串。例如:-
$user=$this->request->data[User]
$data = array(
'username' => $db->value($user['username'], 'string'),
'password' => $db->value($user['password'], 'string'),
'email' => $db->value($user['email'], 'string'),
'phone' => $db->value($user['phone'], 'string'),
'address' => $db->value($user['address'], 'string'),
'location' => $db->value($user['location'], 'string'),
'pincode' => $db->value($user['pincode'], 'integer')
);
$this->User->updateAll($data, array("User.id" => $v));
更新
作为使用updateAll()
的替代方法,您最好使用save()。只要保存的数据包含记录的主键(例如,User.id
),它将执行更新
,而不是插入
:-
$this->request->data['User']['id'] = $v;
$this->User->save($this->request->data);
save()
将为您处理所有字符串,因此无需自己将它们括在引号中。您没有将字符串值括在单引号中。@HoboSapiens有没有简单的方法将它们括在单引号中谢谢Hanks@drmonkeynija您还有什么其他的可能性可以建议我吗?谢谢@Paul我已经更新了答案,以显示使用save()
的更好方法,因为updateAll()
在您的特定示例中有点多余。如果您确实需要使用updateAll()
,并且需要轻松地将所有字符串值用引号括起来,则可以使用PHP函数array\u map
将每个值快速用引号括起来。谢谢@drmonkeynija
$this->request->data['User']['id'] = $v;
$this->User->save($this->request->data);