cakephp cakephp-2.0 cakephp-1.3 cakephp-2.1 cakephp-2.3

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?