Foros del Web » Programando para Internet » PHP »

Error en sintaxis MYSQL

Estas en el tema de Error en sintaxis MYSQL en el foro de PHP en Foros del Web. Bueno, el asunto es que deseo agregar lo que un usuario manda en un formulario al monto total del banco, y sacarlo de la billetera, ...
  #1 (permalink)  
Antiguo 18/11/2008, 12:02
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Error en sintaxis MYSQL

Bueno, el asunto es que deseo agregar lo que un usuario manda en un formulario al monto total del banco, y sacarlo de la billetera, ya cree el codigo, pero me lanza el error;
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '9223372036854775807 SET = '9223372036854775807'' at line 1
¿Que error tengo en la sintaxis?
(No tiene nada que ver con el topico anterior, asi que por favor no lo borren ;))
Las lineas donde esta el codigo que lanza error es de la 119 a la 130
Código php:
Ver original
  1. <?php
  2. # FileName="Connection_php_mysql.htm"
  3. # Type="MYSQL"
  4. # HTTP="true"
  5. $hostname_TecnoPets = "mysql.webcindario.com";
  6. $database_TecnoPets = "*********";
  7. $username_TecnoPets = "*********";
  8. $password_TecnoPets = "*********";
  9. $TecnoPets = mysql_pconnect($hostname_TecnoPets, $username_TecnoPets, $password_TecnoPets) or trigger_error(mysql_error(),E_USER_ERROR);
  10. ?>
  11. <?php
  12. if (!isset($_SESSION)) {
  13. }
  14. $MM_authorizedUsers = "";
  15. $MM_donotCheckaccess = "true";
  16.  
  17. // *** Esto es para restringir el acceso a la pagina
  18. function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
  19.   // Por seguridad, primeramente, el visitante no podra entrar
  20.   $isValid = False;
  21.  
  22.   // La varable de sesion es como el usuario si el esta logeado
  23.   // Y sino, se queda en blanco.
  24.   if (!empty($UserName)) {
  25.     //
  26.     $arrUsers = Explode(",", $strUsers);
  27.     $arrGroups = Explode(",", $strGroups);
  28.     if (in_array($UserName, $arrUsers)) {
  29.       $isValid = true;
  30.     }
  31.     //
  32.     if (in_array($UserGroup, $arrGroups)) {
  33.       $isValid = true;
  34.     }
  35.     if (($strUsers == "") && true) {
  36.       $isValid = true;
  37.     }
  38.   }
  39.   return $isValid;
  40. }
  41.  
  42. $MM_restrictGoTo = "/logeo.php";
  43. if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {  
  44.   $MM_qsChar = "?";
  45.   $MM_referrer = $_SERVER['PHP_SELF'];
  46.   if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  47.   if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
  48.   $MM_referrer .= "?" . $QUERY_STRING;
  49.   $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  50.   header("Location: ". $MM_restrictGoTo);
  51.   exit;
  52. }
  53. ?>
  54. <?php
  55. if (!function_exists("GetSQLValueString")) {
  56. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  57. {
  58.   if (PHP_VERSION < 6) {
  59.     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  60.   }
  61.  
  62.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  63.  
  64.   switch ($theType) {
  65.     case "text":
  66.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  67.       break;    
  68.     case "long":
  69.     case "int":
  70.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  71.       break;
  72.     case "double":
  73.       $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  74.       break;
  75.     case "date":
  76.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  77.       break;
  78.     case "defined":
  79.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  80.       break;
  81.   }
  82.   return $theValue;
  83. }
  84. }
  85.  
  86. $colname_dat = "-1";
  87. if (isset($_SESSION['MM_Username'])) {
  88.   $colname_dat = $_SESSION['MM_Username'];
  89. }
  90. mysql_select_db($database_TecnoPets, $TecnoPets);
  91. $query_dat = sprintf("SELECT * FROM tecnopoints WHERE usuario = %s", GetSQLValueString($colname_dat, "text"));
  92. $dat = mysql_query($query_dat, $TecnoPets) or die(mysql_error());
  93. $row_dat = mysql_fetch_assoc($dat);
  94. $totalRows_dat = mysql_num_rows($dat);
  95.  
  96. $colname_banco = "-1";
  97. if (isset($_SESSION['MM_Username'])) {
  98.   $colname_banco = $_SESSION['MM_Username'];
  99. }
  100. mysql_select_db($database_TecnoPets, $TecnoPets);
  101. $query_banco = sprintf("SELECT * FROM banco WHERE usuario = %s", GetSQLValueString($colname_banco, "text"));
  102. $banco = mysql_query($query_banco, $TecnoPets) or die(mysql_error());
  103. $row_banco = mysql_fetch_assoc($banco);
  104. $totalRows_banco = mysql_num_rows($banco);
  105. ?>
  106.  
  107. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  108. <html xmlns="http://www.w3.org/1999/xhtml">
  109. <head>
  110. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  111. <title>Documento sin título</title>
  112. <link href="/estilo.css" rel="stylesheet" type="text/css" />
  113. </head>
  114.  
  115. <body>
  116. <p>
  117. <?
  118. if($_POST[ag] > $row_dat[tp]) { echo " No tienes tantos TP ";  } else {
  119. $yu =  $row_dat[tp] - $_POST[ag];
  120. $ya =  $row_banco[tp] + $_POST[ag];
  121.  
  122. $montito = "UPDATE $row_dat[tp] SET = '$yu'";
  123. $banqi = "UPDATE  $row_banco[tp] SET  = '$ya'";
  124.  
  125. $ejecutomontito = mysql_query($montito) or die(mysql_error());
  126. $ejecutobanqi = mysql_query($banqi) or die(mysql_error());
  127. };
  128. ?>
  129.  
  130. </p>
  131. <p><a href="/index.php" target="_top">ACTUALIZAR DATOS</a></p>
  132. </body>
  133. </html>
  #2 (permalink)  
Antiguo 18/11/2008, 12:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error en sintaxis MYSQL

Hola lauchalp95,

La sintaxis de UPDATE es: UPDATE tabla SET campo=valor [WHERE condiciones], si te fijas tu estas haciendo una consulta incorrecta.

Saludos
  #3 (permalink)  
Antiguo 18/11/2008, 12:08
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Error en sintaxis MYSQL

Ya entendii! xd MUCHAS GRACIAS.
  #4 (permalink)  
Antiguo 18/11/2008, 12:08
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Error en sintaxis MYSQL

haber??

$montito = "UPDATE $row_dat[tp] SET = '$yu'";

$banqi = "UPDATE $row_banco[tp] = '$ya'";

en ninguna especificas que campo estas actualizando.... ($row_banco[tp] es la tabla o el campo???)

y segundo es que en la segunda no hay un SET.

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #5 (permalink)  
Antiguo 18/11/2008, 12:12
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Error en sintaxis MYSQL

Ahora me surge otro error >.>

Lo cambie por:
Cita:
$montito = "UPDATE tecnopoints SET $row_dat[tp] = '$yu' WHERE usuario = '$_SESSION[MM_Username]'";
$banqi = "UPDATE banco SET $row_banco[tp] = '$ya' WHERE usuario = '$_SESSION[MM_Username]'";
Y me dice:
Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '9223372036854775807 = '9223372036854775807' WHERE usuario = 'lauchu'' at line 1
  #6 (permalink)  
Antiguo 18/11/2008, 12:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error en sintaxis MYSQL

Mira esta es una consulta SQL UPDATE correcta:
Código sql:
Ver original
  1. UPDATE `stock` SET `cantidad`=`cantidad` - 1 WHERE `producto_id`=5

Saludos
  #7 (permalink)  
Antiguo 18/11/2008, 12:15
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Error en sintaxis MYSQL

Siento causar tantas molestias..

Haber, yo lo tengo así ahora mismo(lo modifique):
Cita:
$montito = "UPDATE 'tecnopoints' SET '$row_dat[tp]' = '$yu' WHERE 'usuario' = $_SESSION[MM_Username]";
$banqi = "UPDATE 'banco' SET '$row_banco[tp]' = '$ya' WHERE 'usuario' = $_SESSION[MM_Username]";

$ejecutomontito = mysql_query($montito) or die(mysql_error());
$ejecutobanqi = mysql_query($banqi) or die(mysql_error());
Y me lanza este error-:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''tecnopoints' SET '9223372036854775807' = '9223372036854775807' WHERE 'usuario' ' at line 1
¿Que error tiene mi sintaxis >.<?
  #8 (permalink)  
Antiguo 18/11/2008, 12:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error en sintaxis MYSQL

Si te fijas no es lo mismo una comilla invertida (`) a una comilla simple ('), ese es tu primer problema.

El otro problema es que tu consulta es incorrecta, realmente tienes un campo llamado 9223372036854775807?? Ve la sintaxis es UPDATE tabla_de_la_base_de_datos SET campo = valor.

Saludos.
  #9 (permalink)  
Antiguo 18/11/2008, 12:20
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Probaré con cambiarle a comilla `
Ningun campo se llama asi, ese numero es el numero que tiene que poner en el campo a actualizar
:S

Bueno, le cambie la comilla y ahora consigo este nuevo error:
Unknown column 'lauchu' in 'where clause'
Siendo LAUCHU la variable de sesion MM_Username

Creo que mejore, pero que significa? n.n

Última edición por GatorV; 18/11/2008 a las 12:31
  #10 (permalink)  
Antiguo 18/11/2008, 12:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error en sintaxis MYSQL

Que no tienes un campo llamado lauchu en tu tabla, por favor lee lo que te he puesto tienes un error de sintaxis, lee un buen manual de SQL y con eso podrás realizar tus querys más facilmente, repito, la sintaxis para SQL es:
Código:
UPDATE tabla SET campo=valor [WHERE condiciones] [LIMIT n]
Saludos
  #11 (permalink)  
Antiguo 18/11/2008, 12:40
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Leere el manual de php.net

adios!
gracias a todos me han ayudado un monton ^^

Bueno gente lei el manual y solucione el problema de sintaxis, el asunto es que ahora no hace nada, te dice que lo hizo bien , pero no hace ninfuna accion.
¿Que podrá pasar?

Codigo: (siendo la variable de post ag un numero)
Código PHP:
<?
if($_POST[ag] > $row_dat[tp]) { echo " No tienes tantos TP ";  } else {
$yu =  $row_dat[tp] - $_POST[ag];
$ya =  $row_banco[tp] + $_POST[ag];

$montito "UPDATE tecnopoints SET tp = '$yu' WHERE usuario = '$_SESSION[MM_Username]'";
$banqi "UPDATE banco SET tp = '$ya' WHERE usuario = '$_SESSION[MM_Username]'";

$ejecutomontito mysql_query($montito) or die(mysql_error());
$ejecutobanqi mysql_query($banqi) or die(mysql_error());
};
?>

Última edición por GatorV; 18/11/2008 a las 14:16
  #12 (permalink)  
Antiguo 18/11/2008, 14:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error en sintaxis MYSQL

Verifica el resultado de mysql_query y puedes usar mysql_affected_rows, si es mayor a 0 entonces si hace el cambio si es 0 significa que no habia filas por actualizar.

Saludos
  #13 (permalink)  
Antiguo 18/11/2008, 14:22
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
me fijare >.<

Como uso el mysql_Affected_rows

porque yo hize asi:
<?
if($_POST[ag] > $row_dat[tp]) { echo " No tienes tantos TP "; } else {
$yu = $row_dat[tp] - $_POST[ag];
$ya = $row_banco[tp] + $_POST[ag];


$montito = "UPDATE tecnopoints SET tp = '$yu' WHERE usuario = '$_SESSION[MM_Username]'";
$banqi = "UPDATE banco SET tp = '$ya' WHERE usuario = '$_SESSION[MM_Username]'";

$ejecutomontito = mysql_query($montito) or die(mysql_error());
$ejecutobanqi = mysql_query($banqi) or die(mysql_error());

echo "'Número de filas afectadas:'. mysql_affected_rows ())";

};
?>
Y no me funciona >.<
Soy un tonto ya se... pero necesito su ayuda.

Última edición por GatorV; 18/11/2008 a las 14:44
  #14 (permalink)  
Antiguo 18/11/2008, 14:36
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Error en sintaxis MYSQL

Cita:
Como uso el mysql_Affected_rows
Sin ánimo de malos rollos... ¿¿Has mirado el MANUAL??

Un saludo.
  #15 (permalink)  
Antiguo 18/11/2008, 14:38
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
he leido otro, gracias por el link, me fijo y os dire :)

luego intento, me tengoqwe ir

Última edición por GatorV; 18/11/2008 a las 14:45
  #16 (permalink)  
Antiguo 18/11/2008, 14:44
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Error en sintaxis MYSQL

Aprovecha para repasar la sintaxis de la expresión que intentas usar con el echo (las comillas y esas cosas) :)

Un saludo.

Última edición por Deschamps; 18/11/2008 a las 14:50
  #17 (permalink)  
Antiguo 18/11/2008, 15:35
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Error en sintaxis MYSQL

Claro, ya lo hize y me sale que no mmodifica a ningun usuario, sinembargo deberia modificar a Lauchu...
alguien sabe porque?
Cita:
<?
if($_POST[ag] > $row_dat[tp]) { echo " No tienes tantos TP "; } else {
$yu = $row_dat[tp] - $_POST[ag];
$ya = $row_banco[tp] + $_POST[ag];


$montito = "UPDATE tecnopoints SET tp = '$yu' WHERE usuario = '$_SESSION[MM_Username]'";
$banqi = "UPDATE banco SET tp = '$ya' WHERE usuario = '$_SESSION[MM_Username]'";

$ejecutomontito = mysql_query($montito) or die(mysql_error());

echo "Usuarios modificados: %d\n", mysql_affected_rows();
$ejecutobanqi = mysql_query($banqi) or die(mysql_error());
echo "Usuarios modificados: %d\n", mysql_affected_rows();



};
?>
  #18 (permalink)  
Antiguo 18/11/2008, 15:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error en sintaxis MYSQL

No uses el echo asi directo, usa sprintf() o printf() para eso, por otro lado que te sale en pantalla? Si te sale en 0 es porque ya se han modificado los campos y no los vuelve a actualizar.

Saludos.
  #19 (permalink)  
Antiguo 18/11/2008, 15:38
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Error en sintaxis MYSQL

Sí, me sale 0 , pruebo usando spritf..

pero la cosa es que necesito que actualize esos campos y no lo hace!!
Ayuda, por favor...
  #20 (permalink)  
Antiguo 18/11/2008, 15:39
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Error en sintaxis MYSQL

pero como vas a concatenar asi ps chamo????

hazlo asi:

echo "Usuarios modificados: ". mysql_affected_rows();
$ejecutobanqi = mysql_query($banqi) or die(mysql_error());
echo "Usuarios modificados: ". mysql_affected_rows();

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #21 (permalink)  
Antiguo 18/11/2008, 15:40
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Error en sintaxis MYSQL

eso es exactamente como lo tengo..
  #22 (permalink)  
Antiguo 18/11/2008, 15:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error en sintaxis MYSQL

Si te marca 0, es que no afecto ninguna columna, por ende tu query esta bien pero el problema ya no es tu código PHP si no los datos que tienes en tu Base de Datos.

Saludos
  #23 (permalink)  
Antiguo 18/11/2008, 15:43
 
Fecha de Ingreso: julio-2006
Mensajes: 254
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Error en sintaxis MYSQL

Ok, entonces el codigo esta bien x.x
Me fijare bien el nombre de las columnas por si acaso me confundí en algo.. pero creo que odo esta bien.
Muchas gracias por el soporte qque me han dado, entonces, el problema no es de aqi ^^.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:40.