Foros del Web » Programando para Internet » PHP »

Error desconocido. You have an error in your SQL syntax; check the manual that corr..

Estas en el tema de Error desconocido. You have an error in your SQL syntax; check the manual that corr.. en el foro de PHP en Foros del Web. Hola uso un sistema de noticias y al agregar una noticia mediante el formulario me da este error: Código PHP: You have an error in your SQL syntax ;  check the manual that corresponds to your MySQL server version  for  the right syntax to  ...
  #1 (permalink)  
Antiguo 16/03/2009, 10:16
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Pregunta Error desconocido. You have an error in your SQL syntax; check the manual that corr..

Hola uso un sistema de noticias y al agregar una noticia mediante el formulario me da este error:

Código PHP:
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'hola'', '3')' at line 3 
Lo que intentaba hacer es insertar varias comillas simples, queria insertar una cosa asi:

'ejemplo'.

Es decir la frase entre comillas y me sale ese error ¿alguien sabe a que puede deberse eso?
  #2 (permalink)  
Antiguo 16/03/2009, 10:22
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 12 años, 9 meses
Puntos: 7
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Mejor pon el codigo del insert para que podamos verlo

La sintasis mysql tiene las comillas simples reservadas. Si quisieses insertar una frase con comillas deberias ponerlas asi: /'
  #3 (permalink)  
Antiguo 16/03/2009, 10:25
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

el insert es este:

Código PHP:
// hacemos el INSERT en la BD
$sqlInsertNot mysql_query("INSERT INTO sn_noticias
(notTitulo, notTexto, notCategoriaID)
VALUES ('$notTitulo', '$notTexto', '$notCategoriaID')"
,
$db_link) or die(mysql_error()); 
  #4 (permalink)  
Antiguo 16/03/2009, 10:55
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 4 meses
Puntos: 416
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Tienes que usar addslashes o mysql_real_escape_string para tratar la informacion que viene de los campos o lo que sea. Al intentar meter informacion con comillas simples, te rompe la estructura de tu INSERT.
  #5 (permalink)  
Antiguo 16/03/2009, 11:05
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

¿Y como uso el addslashes? sabia de su existencia pero nunca lo e utilizado.
Si puediera indicarle aqui el codigo mediante el insert que te puse mas arriba te lo agradeceria un monton.
  #6 (permalink)  
Antiguo 16/03/2009, 11:06
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 4 meses
Puntos: 416
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

http://www.php.net/manual/en/function.addslashes.php
  #7 (permalink)  
Antiguo 16/03/2009, 11:07
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 13 años, 4 meses
Puntos: 70
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Así

Saludos

[Edito]
Lo mismo que te posteó Ronruby (por unos segundos me ganaste jejeje)
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #8 (permalink)  
Antiguo 16/03/2009, 11:16
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Jejeje sois unos maquinas jaja. Ahora viene la otra duda... ya tengo el addslashes funcionando pero ahora cuando inserto la noticia al mostrarla en la web me sale una de las comillas cambiada por una \ :D y revisando el manual ese que me habeis pasado creo que tengo que usar stripslashes en la consulta. ¿Es eso cierto o estoy loco perdio? jejeje saludos.
  #9 (permalink)  
Antiguo 16/03/2009, 11:20
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 13 años, 4 meses
Puntos: 70
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Sí :p

Saludos

[Edito]
Esta vez te gane por milésimas jejeje. Saludos Ron
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #10 (permalink)  
Antiguo 16/03/2009, 11:20
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 4 meses
Puntos: 416
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

O.o Pues, si. Tienes que usar stripslashes para eliminar los \ en las comillas.

EDIT: Esta vez me ganaste tu por unos segundos xD.
  #11 (permalink)  
Antiguo 16/03/2009, 11:43
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Bueno ya estoy otra ve liao jejej lo que crei que ya funcionaba no funciona ni a empujones jejeje :P haber mirar el codigo de agregar la noticia es este:

Código PHP:
<?php
// incluimos el archivo de conexion
include ('db-cnx.php');
// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['notTitulo']) && $_POST['notTexto'] &&
$_POST['notCategoriaID']){
// creamos las variables y les asignamos los valores a insertar
$notTitulo $_POST['notTitulo'];
$notTexto $_POST['notTexto'];
$notCategoriaID $_POST['notCategoriaID'];
// hacemos el INSERT en la BD
$sqlInsertNot mysql_query("INSERT INTO sn_noticias
(notTitulo, notTexto, notCategoriaID)
VALUES ('$notTitulo', '$notTexto', '$notCategoriaID')"
,
$db_link) or die(mysql_error());
// enviamos un mensaje de exito
echo "Los datos fueron gurdados correctamente";
}else{
// si el formulario envia algun campo vacio
// enviamos un mensaje de error
echo "Debe llenar todos los campos del formulario";
}
}
?>
<!-- el formulario -->
<form name="noticia" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<p>
Título de la Noticia<br />
<input type="text" name="notTitulo" size="50" />
</p>
<p>
Texto de la Noticia<br />
<textarea name="notTexto" rows="10" cols="50"></textarea>
</p>
<p>
Categoría<br />
<select name="notCategoriaID">
<option value="">Escoger de la Lista</option>
<?php
// asignamos una categoria a la noticia
// mediante un select
$sqlQueryCat mysql_query("SELECT * FROM sn_categorias"$db_link)
or die(
mysql_error());
// creamos un bucle while
// que nos muestre todas las categorias
// que tenemos guardadas en la BD
while($rowCat mysql_fetch_array($sqlQueryCat)){
echo 
"<option value='$rowCat[cat_ID]'>$rowCat[catCategoria]</option>";
}
?>
</select>
</p>
<p>
<input type="submit" name="enviar" value="Enviar" />
</p>
</form>
¿Donde demonios inserto el addslashes y como?
  #12 (permalink)  
Antiguo 16/03/2009, 11:46
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 4 meses
Puntos: 416
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

¿Y donde aplicas stripslashes y addslashes?
  #13 (permalink)  
Antiguo 16/03/2009, 11:48
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

jejejej yo que se.... jajajajjaja habia puesto el addslashes antes del insert a la base de datos y el stripslashes lo pongo en otra página la cual es la que muestra los resultados.
  #14 (permalink)  
Antiguo 16/03/2009, 11:49
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 4 meses
Puntos: 416
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Pues asi es como tiene que ser. Si lo pusiste asi como dijiste, no deberia haber problema alguno.
  #15 (permalink)  
Antiguo 16/03/2009, 11:52
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

mira asi lo tengo con el addslashes, si esta mal no me pegeis en que llevo poco con esto :P .

Código PHP:
<?php
// incluimos el archivo de conexion
include ('db-cnx.php');
// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['notTitulo']) && $_POST['notTexto'] &&
$_POST['notCategoriaID']){
// creamos las variables y les asignamos los valores a insertar
$notTitulo $_POST['notTitulo'];
$notTexto $_POST['notTexto'];
$notCategoriaID $_POST['notCategoriaID'];

addslashes($notTitulo);
addslashes($notTexto);
addslashes($notCategoriaID);

// hacemos el INSERT en la BD
$sqlInsertNot mysql_query("INSERT INTO sn_noticias
(notTitulo, notTexto, notCategoriaID)
VALUES ('$notTitulo', '$notTexto', '$notCategoriaID')"
,
$db_link) or die(mysql_error());



// enviamos un mensaje de exito
echo "Los datos fueron gurdados correctamente";
}else{
// si el formulario envia algun campo vacio
// enviamos un mensaje de error
echo "Debe llenar todos los campos del formulario";
}
}
?>
<!-- el formulario -->
<form name="noticia" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<p>
Título de la Noticia<br />
<input type="text" name="notTitulo" size="50" />
</p>
<p>
Texto de la Noticia<br />
<textarea name="notTexto" rows="10" cols="50"></textarea>
</p>
<p>
Categoría<br />
<select name="notCategoriaID">
<option value="">Escoger de la Lista</option>
<?php
// asignamos una categoria a la noticia
// mediante un select
$sqlQueryCat mysql_query("SELECT * FROM sn_categorias"$db_link)
or die(
mysql_error());
// creamos un bucle while
// que nos muestre todas las categorias
// que tenemos guardadas en la BD
while($rowCat mysql_fetch_array($sqlQueryCat)){
echo 
"<option value='$rowCat[cat_ID]'>$rowCat[catCategoria]</option>";
}
?>
</select>
</p>
<p>
<input type="submit" name="enviar" value="Enviar" />
</p>
</form>
  #16 (permalink)  
Antiguo 16/03/2009, 11:56
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 4 meses
Puntos: 416
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Asi directo no puedes, tienes que hacer algo como:

$notTitulo = addslashes($notTitulo);

Y asi sucesivamente.
Y para recuperar los datos, el proceso es el mismo, pero en vez de addslashes, usas stripslashes().
  #17 (permalink)  
Antiguo 16/03/2009, 12:01
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

ea pues ya esta solucionado Ronruby te debo una asi que pideme lo que quieras menos unas cuantas cosas.... (mi novia, dinero, etc....) jejjejejeje de veras muchisimas gracias por todo y a todos.
  #18 (permalink)  
Antiguo 16/03/2009, 12:07
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 4 meses
Puntos: 416
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Cita:
pideme lo que quieras menos unas cuantas cosas.... (mi novia, dinero, etc....)
Pues entonces no me queda nada que pedirte

Es broma. ;)

Cita:
de veras muchisimas gracias por todo y a todos.
Para eso estamos.
  #19 (permalink)  
Antiguo 16/03/2009, 14:12
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Pregunta Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Bien ahora me acabo de dar cuenta de que en la consulta no va bien el stripslashes...... al hacer la consulta en pantalla aparece delante de la comilla simple la \ esta. Aqui les dejo el codigo de la consulta ¿en que falla?.

Código PHP:
<?php
// verificamos si se ha enviado
// alguna variable via GET
if(isset($_GET['id']) && $_GET['categoria']){
// asignamos los valores
// a las variables que usaremos
$cat_ID $_GET['id'];
$categoria $_GET['categoria'];
$clausula "WHERE notCategoriaID = '$cat_ID'";
// tambien armamos el titular de la pagina
$titulo "Noticias en la categoria $categoria";
}else{
// de lo contrario
// el titulo sera general
//$titulo = "Todas las noticias";
}
$notTitulo=stripslashes($notTitulo);
$notTexto=stripslashes($notTexto);
$notCategoriaID=stripslashes($notCategoriaID);
// armamos la consulta
$sqlQueryNot mysql_query("SELECT notTitulo, notTexto FROM sn_noticias
$clausula ORDER BY not_ID DESC LIMIT 3"
$db_link)
or die(
mysql_error());

//echo "<p>$titulo</p>";
// mostramos las noticias,
// otra vez usando un bucle while
while($rowNot mysql_fetch_array($sqlQueryNot)){
echo 
"<p class=\Estilo1\"><hr>$rowNot[notTitulo]</p>";
echo 
nl2br($rowNot['notTexto']);
}
echo 
"<br/><hr>";

?>
  #20 (permalink)  
Antiguo 16/03/2009, 14:40
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 24
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Estas agregando stripslashes() antes de hacer la consulta y a unas variables que no existen.
La idea es aplicar esa funcion a los datos que sacaste de tu tabla antes de que se vean en pantalla, la cosa sería algo así

Código php:
Ver original
  1. echo "<p class=\"Estilo1\"><hr>" . stripslashes($rowNot['notTitulo']) . "</p>";

Saludos.
  #21 (permalink)  
Antiguo 16/03/2009, 14:40
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 4 meses
Puntos: 416
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

Código PHP:
while($rowNot mysql_fetch_array($sqlQueryNot)){ 
echo 
"<p class=\Estilo1\"><hr>".stripslashes($rowNot['notTitulo'])."</p>"
echo 
nl2br(stripslashes($rowNot['notTexto'])); 

  #22 (permalink)  
Antiguo 16/03/2009, 14:43
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: Error desconocido. You have an error in your SQL syntax; check the manual

jejejeje yo flipo con ustedes sois unos maquinas. ahora ya creo que esta al 100% vamos a ver si dentro de 5 minutos no me doy cuenta de que me falla otra cosa jaja saludos.
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 15:06.