Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] You have an error in your SQL syntax; check the manual that corresponds to your MySQL

Estas en el tema de You have an error in your SQL syntax; check the manual that corresponds to your MySQL en el foro de PHP en Foros del Web. buenos dias tengo este error en mi bd <?php include("conexion.php"); if(isset($_POST['nombres']) && !empty($_POST['nombres']) && (isset($_POST['apellidos']) && !empty($_POST['apellidos']) && (isset($_POST['cedula']) && !empty($_POST['cedula']) && (isset($_POST['pass']) && !empty($_POST['pass']) ...
  #1 (permalink)  
Antiguo 03/04/2015, 00:13
 
Fecha de Ingreso: marzo-2015
Mensajes: 184
Antigüedad: 9 años, 1 mes
Puntos: 3
You have an error in your SQL syntax; check the manual that corresponds to your MySQL

buenos dias tengo este error en mi bd

<?php

include("conexion.php");


if(isset($_POST['nombres']) && !empty($_POST['nombres']) &&
(isset($_POST['apellidos']) && !empty($_POST['apellidos']) &&
(isset($_POST['cedula']) && !empty($_POST['cedula']) &&
(isset($_POST['pass']) && !empty($_POST['pass']) &&
(isset($_POST['nick']) && !empty($_POST['nick']))))))



{
$conexion = mysql_connect($host, $user, $password) or die ("problema al conectarrr");
mysql_select_db($bd,$conexion) or die(mysql_error());

mysql_query("INSERT INTO usuario (NOMBRES,APELLIDOS,CEDULA,PASS,NICK) VALUES ('$_POST[nombres]','$_POST[apellidos]','$_POST[cedula]','$_POST[pass]','$_POST[nick]',')", $conexion);
echo (mysql_error());

}else{
echo "problemas al insertoar";

}

?>

lo he buscado por google y me dice muchas cosas que ya eh probado pero nada no me ingresan datos a mi base de datos,,, quien me puede ayudar porfis..
agrad
  #2 (permalink)  
Antiguo 03/04/2015, 00:22
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 8 meses
Puntos: 145
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

Creo que a vos te dije que uses MySQLi porque a MySQL le van a dejar de dar soporte.

¿No te dice en qué línea está el error?

p.s.1: Tienes que usar el Highlight, por favor.

p.s.2: Tienes unas comillas dobles mal cerradas.
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 03/04/2015, 00:42
 
Fecha de Ingreso: marzo-2015
Mensajes: 184
Antigüedad: 9 años, 1 mes
Puntos: 3
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

si tu me dijiste lo de mysqli pero yo te pregunte que por que razón? y tu no me respondiste nada, lo otro es que soy nuevo en esto del desarrollo y yo se que son bobadas para los maestros de la programación pero para mi que estoy empezando y que por eso hago estas preguntas, créeme que si hubiera sabido que a sql le va a dejar de dar soporte pues obvio lo cambiaría de una.

bueno y con respecto a mi codigo ya arregle unas cosas y donde termina mi codigo

','$_POST[nick]')", $conexion); aqui deje comilla sencilla, pero igual sigo sin recibir datos a mi bd.

disculpa si te hago enojar con esto pero si no es preguntando o leyendo como aprendo.
agradesco tu amable paaaaaacienciaaa

gracias
  #4 (permalink)  
Antiguo 03/04/2015, 03:51
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años, 1 mes
Puntos: 74
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

si no te ingresan datos a la base de datos es quizá por ese IF gigante. ¿Estás seguro de que devuelve TRUE el IF este?

otra cosa, para evitar SQL injection deberías usar prepared statements

http://php.net/manual/en/pdo.prepared-statements.php
  #5 (permalink)  
Antiguo 03/04/2015, 04:36
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

MySQLi es una mejora de MySQL, se puede decir que es su siguiente versión, y que pasa con las versiones anteriores ? Van quedando obsoletas

Ventajas de MySQLi:
  1. A parte de ser más cómodo a la hora de montar nuestras querys, ofrece mucha seguridad contra el SQL injected.
  2. La posibilidad de usar mysqli_ssl_set() permite realizar conexiones seguras indicando detalles del certificado mediante los parámetros.
  3. Posibilidad de ejecutar varias querys separadas por punto y coma, en una conexión. Al ser orientado a objetos nos permite agregarle nuevas funcionalidades
  4. Esta característica permite al desarrollador ampliar el objeto para añadir nuevas funcionalidades más específicas. Por ejemplo se podrían separar los errores de operación (conexión) a los de desarrollo (querys mal formadas).
  5. Ofrece mucha seguridad contra SQL injection.
  6. También soporte y librerias

Y que pasa con MySQL ?
  • Para cuando la versión de la base de datos sea menor a 4.1.3 o nuestra versión de PHP sea menor a la 5.0.

Solo tenías que googlear y encontrarías todo esto en la primera o segunda página
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #6 (permalink)  
Antiguo 03/04/2015, 04:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

Primero que nada : al final del VALUES tienes un apostrofe sin cerrar. O te falta un valor o te sobra una coma con un apostrofe. Eso pareces haberlo resuelto después, pero como no capturas el resultado devuelto por MySQL no podemos saber si hay ahora otro problema.
Postea como queda ka query con los datos antes de mandarla. Usa una variable para ella y haz un echo para verla.
Segundo, lo que está obsoleto y eventualmente no tendrá soporte es la librería de acceso a datos para PHP MYSQL y no el SQL como dices en una parte, o el servidor MySQL como se menciona.
Espero que ese detalle ya lo tengan claro, porque no parecen estar haciendo la salvedad.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/04/2015 a las 05:17
  #7 (permalink)  
Antiguo 04/04/2015, 13:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 28
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

El problema esta al final
'$_POST[nick]',')

despues de la coma tienes una comilla simple de mas, debes quitarla
  #8 (permalink)  
Antiguo 04/04/2015, 15:11
 
Fecha de Ingreso: marzo-2015
Mensajes: 184
Antigüedad: 9 años, 1 mes
Puntos: 3
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

muchas gracias por sus comentarios y con respecto a mysqli lo voy a tomar en cuenta para mi segunda prueba.

se que aprender desarrollo no es fácil pero igual aquí estoy y seguiré preguntando hasta que vuelva bueno en esto y así ayudar también a los demás.

con respecto a mi código ya le hice algunas modificaciones pero cuando le doy enviar me sale la pagina en blanco y no recibe datos mi bd.

$conexion = mysql_query("INSERT INTO usuario (NOMBRES,APELLIDOS,CEDULA,PASS,NICK) VALUES ('$_POST[nombres]','$_POST[apellidos]','$_POST[cedula]','$_POST[password]','$_POST[nick]')";
echo (mysql_error());


según el programa aquí esta el error.

agradezco sus comentarios y su valiosa ayuda.


gracias
  #9 (permalink)  
Antiguo 04/04/2015, 15:32
 
Fecha de Ingreso: marzo-2015
Mensajes: 184
Antigüedad: 9 años, 1 mes
Puntos: 3
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

gracias ya lo solucione estos paréntesis me sacan la cabeza el código quedo así.

$conexion = mysql_query ("INSERT INTO usuario (NOMBRES, APELLIDOS, CEDULA, PASSWORD, NICKNAME) VALUES ('$_POST[nombres]','$_POST[apellidos]','$_POST[cedula]','$_POST[password]','$_POST[nickname]')");
echo (mysql_error());

ahora si quedo almacenado a mi bd gracias por su ayuda
  #10 (permalink)  
Antiguo 04/04/2015, 15:47
 
Fecha de Ingreso: marzo-2015
Mensajes: 184
Antigüedad: 9 años, 1 mes
Puntos: 3
Pregunta Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

Cita:
Iniciado por superweb360 Ver Mensaje
si no te ingresan datos a la base de datos es quizá por ese IF gigante. ¿Estás seguro de que devuelve TRUE el IF este?

otra cosa, para evitar SQL injection deberías usar prepared statements

http://php.net/manual/en/pdo.prepared-statements.php

que me recomiendas que ponga en vez de este if ????


gracias por la ayuda
  #11 (permalink)  
Antiguo 04/04/2015, 21:35
 
Fecha de Ingreso: abril-2001
Ubicación: Argentina
Mensajes: 67
Antigüedad: 23 años, 1 mes
Puntos: 0
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

Como minimo declares cada POST antes de usarlo:

Código PHP:
$num_documento stripslashes(mysqli_real_escape_string($conexion$_POST['num_documento']));

$telefono stripslashes(mysqli_real_escape_string($conexion$_POST['telefono'])); 
Para validar yo valido 1 x 1 no todo junto y no busco que este declarado si no que este vacio o no cumpla algun requisito.

Código PHP:
if (empty($nombre)) { // comprobamos que el campo ID_Nombre no este vacio
    
echo "Debe introducir un Nombre. <a href='javascript:history.back();'>Reintentar</a>";
} elseif (empty(
$telefono)) { // comprobamos que el campo Telefono no esté vacío
    
echo "Debe introducir un Teléfono. <a href='javascript:history.back();'>Reintentar</a>";
} else { 
y cuantos else if necesites.

Segun veo en tu script pones isset y al lado !empty siendo este el contrario a VACIO.

Una ayudita para que entiendas mejor:

https://www.virendrachandak.com/demo...vs-is_null.php

Por ultimo te recomiendo que utilices mysqli en vez de mysql, mi ejemplo es con mysqli

Código PHP:
Ver original
  1. //Alta en Tabla Clientes
  2.     $sql_insert = sprintf("INSERT INTO clientes (nombre, apellidos, razon_social, id_tipodocidentidad, num_documento, email, direccion) VALUES ('%s','%s','%s','%s', '%s','%s','%s')", $nombre, $apellidos, $razon_social, $id_tipodocidentidad, $num_documento, $email, $direccion);
  3.     mysqli_query($conexion, $sql_insert);


Saludos
__________________
Saludos!

Última edición por [^_WebMaster^_]; 04/04/2015 a las 21:37 Razón: Uso MYSQL a MYSQLi

Etiquetas: manual, mysql, select, sql, syntax
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 05:07.