cakephp - Error: SQLSTATE[42000]: error de sintaxis o violación de acceso: 1064 Tiene un error en su sintaxis SQL; verifique el manual
cakephp-2.0 cakephp-1.3 (1)
updateAll()
no ajusta automáticamente los valores de cadena entre comillas a diferencia de cuando se usa save()
. Tienes que hacer esto tú mismo. De los documentos : -
Los valores literales deben ser citados manualmente usando DboSource :: value ().
updateAll()
envolver cada valor de cadena en $this->request->data
con comillas usando algo como el método value()
updateAll()
datos antes de llamar a updateAll()
: -
$db = $this->getDataSource();
$value = $db->value($value, ''string'');
Es aconsejable no solo pasar $this->request->data
para updateAll()
todos modos, ya que alguien podría inyectar datos en su base de datos. En su lugar, cree una nueva matriz de guardar datos de sus datos de solicitud y ajuste las cadenas según corresponda. Por ejemplo:-
$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));
Actualizar
Como alternativa al uso de updateAll()
, sería mejor usar save()
para lo que está haciendo aquí. Siempre que sus datos de guardado contengan la clave principal del registro ( p User.id
Ej. User.id
), se realizará una UPDATE
lugar de un INSERT
: -
$this->request->data[''User''][''id''] = $v;
$this->User->save($this->request->data);
save()
manejará todas las cadenas por usted, así que no hay necesidad de envolverlas entre comillas usted mismo.
Error: SQLSTATE [42000]: error de sintaxis o violación de acceso: 1064 Tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de ''@ g.com,'' Usuario ''.'' teléfono ''= 87665r5,'' Usuario ''.'' dirección ''= 23lsdhf,'' Usuario ''.'' ubicación '' ''en la línea 1
Consulta SQL: UPDATE ''cake''.''users'' AS ''User'' SET ''User''.''username'' = paul, ''User''.''password'' = eben, ''User''.''email'' = [email protected], ''User''.''phone'' = 87665r5, ''User''.''address'' = 23lsdhf, ''User''.''location'' = lskjaflasi, ''User''.''pincode'' = 867567 WHERE ''User''.''id'' = 1
Mi código es
if($this->request->data)
{$User=$this->request->data[User];
$this->User->updateAll($User,array("User.id" => $v));}
¿Cómo puedo actualizar todo el formulario?