Comunidad de diseño web y desarrollo en internet online

SQL Syntax error near '1' at line 1

Citar            
MensajeEscrito el 25 Ene 2011 02:26 am
Hola pues ya me ha salido mucho este error y en todos los demas casos lo he solucionado solito, pero esta vez ya me ofusque.

El error es:
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 '1' at line 1

Osea que esta por el '1' en la linea uno... eh aqui todo mi codigo php:

Código PHP :

<?php 
 
require('conectar.php'); 
 
$Valor = $_POST['valor']; 
$id = $_POST['valor2']; 
 
 
$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = $id LIMIT 1 ") or die(mysql_error()); 
$rowArchivosDelProyecto = mysql_fetch_array($queryArchivosDelProyecto); 
 
$archivo=$rowArchivosDelProyecto['pURL']; 
unlink($archivo); 
 
$sql = @mysql_query("DELETE FROM archivos WHERE id = $id ") or die(mysql_error()); 
 
if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error());   
} else { 
    header("Location: proyecto ver02.php?NombreVariable=".$Valor); 
} 
 
?>
 



Ah si, por si alguien se lo pregunta, efectivamente borra lo que tiene que borrar tanto el archivo como el registro en la tabla... Y no tengo idea de en cual de las dos consultas sea donde arroja el error.

Les agradesco mucho cualquier idea.

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Ene 2011 04:58 am
sonará absurdo pero, intenta eliminar el espacio después del 1 en la primer linea del sql

Por tribak

Claber

2448 de clabLevel

6 tutoriales

Genero:Masculino   Héroes

Fotógrafo o algo

firefox
Citar            
MensajeEscrito el 25 Ene 2011 02:11 pm
no existia el espacio cuando me salio por primera vez el error, y tampoco estaba la opcion de LIMIT 1.

Resumen de mis intentos hasta ahora:

Ejecute las consultas sql en phpmyadmin y funcionan correctamente borrando lo que tiene que tienen que borrar tanto el archivo en el folder como el registro en la tabla de mysql...

Código PHP :


# Usar echo para ver si las variables $id y $Valor recojen los valores correctamente:

$Valor = $_POST['valor'];
$id = $_POST['valor2']; 

echo "Valor: ".$Valor."<br /> Id: ".$id."<br />";


###################

# Agregar limite 1:
$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = $id LIMIT 1 ") or die("error:".mysql_error());

###################

# Ver en que consulta se genera el error:

$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = $id LIMIT 1 ") or die("error al ejecutar el select".mysql_error());

$sql = @mysql_query("DELETE FROM archivos WHERE id = $id ") or die("error al ejecutar el delete".mysql_error());

#######################

# Modificar conectar.php eliminando $con

<?php
# conectar a la base de datos

$con = mysql_connect("localhost","root","david");
if (!$con)
  {
  die('No se puede conectar: ' . mysql_error());
  }


mysql_select_db("usuarios_fdsr");

?>



Ninguna de las cosas anteriroes a mostrado resolver el problema

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Ene 2011 02:34 pm
Eliminando la comprobacion de si realizo la consulta o no, ya no sale el error.

Código PHP :

if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error());    
} else {  
    header("Location: proyecto ver02.php?NombreVariable=".$Valor);  
}  


Por lo tanto he dicidido eliminar esa comprobacion de momento, si alguien pude decirme otra forma de hacer la comprobacion se los agradeceria mucho.

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Ene 2011 05:59 pm
Probaste esto ...

Código PHP :

$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = '$id' LIMIT 1 ") or die(mysql_error());


Poner entre comillas simples a la variable $id ... un saludo !

Por alffa

276 de clabLevel



 

Mi casa o mi trabajo...depende (México)

chrome
Citar            
MensajeEscrito el 25 Ene 2011 07:26 pm
si probe eso alffa, se me paso ponerlo en las cosas que intente ya.

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Ene 2011 05:07 am
Hola
No probaste guardar el contenido de la consulta en una variable e imprimirla? Así lees la consulta que estás haciendo y tenés una idea más clara de dónde puede estar el error. Cuando me pasan cosas como esa lo soluciono con ese método.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 26 Ene 2011 02:54 pm
Hola holler,

Me suena a que tu variable $id pueda contener algún caracter especial (espacio en blanco, retorno de línea y esas cosas).

Te recomendaría ejecutar tu consulta sql de la siguiente manera:

$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = ".trim($id)." LIMIT 1 ") or die(mysql_error());

Con la sentencia php "trim" te aseguras de eliminar mencionados caracteres.

Si no te funciona, por favor imprimí la consulta mysql en pantalla y decinos el resultado. Sería:

echo "SELECT * FROM archivos WHERE id = ".trim($id)." LIMIT 1";

Saludos.-

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 26 Ene 2011 03:00 pm
Para que sepas exactamente que estas mandando como instruccion SQL cambia tu codigo de esto

Código PHP :

$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = $id LIMIT 1 ") or die("error:".mysql_error()); 
a esto:

Código PHP :

$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = $id LIMIT 1 ") or die("Error en queryArchivosDelProyecto:".mysql_error()."<br/>".htmlentities($queryArchivosDelProyecto));
Modifica lo que viene dentro del parentesis de or die() para personalizar el mensaje y asi sepas a cual instruccion pertenece, adicional a eso con la parte de htmlentities($queryArchivosDelProyecto) veras en pantalla que fue lo que exactamente recibio MySQL con eso tendras una idea más exacta de que peude estar fallando.

De ahi nos cuentas como te fue.

COPY, PASTE, PLAY AND ENJOY

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

chrome
Citar            
MensajeEscrito el 26 Ene 2011 03:09 pm
Hola y gracias por sus comentarios y sugerencias, de todo lo que me han dicho la unica opcion que no intente fue la de trim($id), pero de cualquier manera en esa consulta no esta el error, pagina arriba hice un comentario con un log de todo lo que he intentado hasta ahora y la localizacion del error.

Eliminando la comprobacion de si realizo la consulta o no, ya no sale el error, deja de aparecer:

Código PHP :

if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error());    

} else {  

    header("Location: proyecto ver02.php?NombreVariable=".$Valor);  

}  


Por lo tanto he dicidido eliminar esa comprobacion de momento, si alguien pude decirme otra forma de hacer la comprobacion se los agradeceria mucho.

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Ene 2011 09:35 pm
Ah una cosita, cuando yo escribo consultas en SQL desde PHP generalmente pongo las variables entre comillas simples, no recuerdo la explicación exacta de eso pero sí recuerdo haber leído en la página de PHP que si no usás las comillas simples, te tira error de sintaxis de SQL.
En definitiva, yo creo que tu error se solucionaría si escribís:

Código :

$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = '$id' LIMIT 1 ") or die(mysql_error());  

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 26 Ene 2011 10:06 pm

killbill07 escribió:

Ah una cosita, cuando yo escribo consultas en SQL desde PHP generalmente pongo las variables entre comillas simples, no recuerdo la explicación exacta de eso pero sí recuerdo haber leído en la página de PHP que si no usás las comillas simples, te tira error de sintaxis de SQL.
En definitiva, yo creo que tu error se solucionaría si escribís:

Código :

$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = '$id' LIMIT 1 ") or die(mysql_error());  


Yo solo uso las comillas para cuando tengo texto en la variable, con numeros nunca he tenido problemas, aun asi no perdia nada con intentar tu propuesta, el error sigue apareciendo.

Gracias de todas formas.

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Ene 2011 10:59 pm
Hola a todos y he aqui el porque de este error que tanto me dio problemas, al parecer es mas obvio de lo que creiamos. Despues de leer muchos manuales, y preguntar a mucha mas gente el error es mio.

Mi culpa: realizo dos veces la consulta, la primera vez en el $sql y por segunda vez en el if(!mysql...

Código PHP :

$sql = @mysql_query("DELETE FROM archivos WHERE id = $id ") or die(mysql_error());  
  
if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error());    


Por lo tanto borrando la segunda (la comprobacion) basta para que deje de aparecer el error, como lo mencione varias veces arriba.

Una disculpa a todos los que me ayudaron y mil gracias por sus comentarios y paciencia. Ojala todo esto le sirva a alguien mas en problemas.

[Yo lo doy por cerrado, no se uds.]

Por holler

65 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Ene 2011 11:03 pm
Ah si, mi codigo final queda de esta forma:

Código PHP :

<?php  
  
require('conectar.php');  
  
$Valor = $_POST['valor'];  
$id = $_POST['valor2'];  
  
  
$queryArchivosDelProyecto = @mysql_query("SELECT * FROM archivos WHERE id = $id LIMIT 1 ") or die(mysql_error());  
$rowArchivosDelProyecto = mysql_fetch_array($queryArchivosDelProyecto);  
  
$archivo=$rowArchivosDelProyecto['pURL'];  
unlink($archivo);  
  
$sql = @mysql_query("DELETE FROM archivos WHERE id = $id ") or die(mysql_error());  
  
header("Location: proyecto.php?NombreVariable=".$Valor);  
  
?>

Por holler

65 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.