Foros del Web » Programando para Internet » PHP »

por favor ayuda con error sql

Estas en el tema de por favor ayuda con error sql en el foro de PHP en Foros del Web. Hola , ya he posteado anteriormente este error y no conseguí solucionar el problema, pero ahora despúes de tantas y tantas horas trasteando voy a ...
  #1 (permalink)  
Antiguo 19/09/2008, 05:04
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
por favor ayuda con error sql

Hola , ya he posteado anteriormente este error y no conseguí solucionar el problema, pero ahora despúes de tantas y tantas horas trasteando voy a ser más claro para evitar respuestas tipo (haz var_dump para ver si llega el array). Espero explicarme mejor esta vez:

Error
Código:
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
Función que procesa el array bidimensianal con los datos
Código:
function update_articles_pedido($article) {

//return count($articles);
  $conn = db_connect();

//for ($i=0;$i<count($article);$i++)
foreach ($article as $row)
							 {

 	$sSQL =mysql_query ( "UPDATE  pedidos_articulos   
          	SET unidades='$row[1]'
		WHERE pedidoid='$row[0]' ");
							
							
							 
	$result=mysql_query($sSQL)or die(mysql_error());

	if (!$result)
	return 0;
	
	
	}
		mysql_free_result($sSQL);						  

	return 1; 
	
}

Pruebas

1.
haciendo esto dentro de la función
Código:
foreach ($article as $row) {
							
echo "unidades :".$row[1]."<br>";		
echo "pedidoid :".$row[0]."<br>";
}
Obtengo
unidades :1111
pedidoid :707
unidades :444
pedidoid :708

Por lo que creo que podemos descartar que le problema venga de que no se pasa el array correctamente.

2. He revisado los campos de la Bd y están correctos (los nombres y tipos se corresponden)

3 No entiendo mucho de sql solo lo justo para trabajar con php y muchas veces la memoria me falla por lo que recurro a código que ya tengo hecho para copiar y pegar, pero he hecho esto desde PHPMYADMIN (Y HA FUNCIONADO PERFECTAMENTE, YA QUE SE HA ACTUALIZADO EL CAMPO).
Código:
UPDATE  pedidos_articulos   
           SET unidades='126'
	WHERE pedidoid='711'
4 Ante mi desesperación (jejej) decidí probar actualizar UN SOLO ARTÍCULO , es decir la idea es que de todos los artículos que se me muestran 5,6,7,8 pueda actualizar las unidades de cada uno de ellos, pero si los actualizo todos NO FUNCIONA ahora si actualizo solo UNO , ¡¡¡ SI FUNCIONA ¡¡ pero sigue saliendo el mismo error.

Código:
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
Por favor ¿alguien me puede ayudar y darme una respuesta antes de que me vuelva majara?.
Por si no me explique bien , los valores del array $article SI LLEGAN BIEN, digo esto porque me han insistido mucho en lo mismo siempre , y lo he comprobado con un foreach.
Un saludo y mil gracias

Última edición por Dundee; 19/09/2008 a las 05:20
  #2 (permalink)  
Antiguo 19/09/2008, 07:56
Avatar de RollerSky  
Fecha de Ingreso: marzo-2008
Mensajes: 123
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: por favor ayuda con error sql

Uff! parece todo estar bien, podrias poner la estructura de esa tabla? tambien prueba salcandolo del foreach y pruebalo con el FOR o solo haciendo una consulta a la vez.. y cuentanos
  #3 (permalink)  
Antiguo 19/09/2008, 08:04
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: por favor ayuda con error sql

bueno por todas la pruebas que haz hecho parece que la sentencia esta correcta.
Probaste a ver si la conexión a la Db esta correcta?

Salu2
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #4 (permalink)  
Antiguo 19/09/2008, 08:05
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: por favor ayuda con error sql

Hola Dundee, cómo vas??

1. Por qué actualizas 2 veces?, así lo necesitas luego?? Lógicamente, la segunda consulta (la que repites) va a tener error, por que te arroja el resultado de la primera
Código PHP:
$sSQL =mysql_query "UPDATE  pedidos_articulos SET unidades='$row[1]'    WHERE pedidoid='$row[0]' ");
$result=mysql_query($sSQL)or die(mysql_error()); 
Dos veces ejecutas la consulta(porque llamas 2 veces a mysql_query)

2. Le haz hecho "echo" a las consultas para ver que muestra?? Además, al menos que no necesites 2 veces hacer lo mismo Yo quitaría un mysql_query y haría lo siguiente, para intentar detectar el error si con lo primero que te dije no es suficiente:
Código PHP:
echo $sSQL="UPDATE  pedidos_articulos SET unidades='$row[1]' WHERE pedidoid='$row[0]'";
$result=mysql_query($sSQL)or die(mysql_error());
echo 
"<br />" 
Haz probado eso??

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 19/09/2008, 08:24
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: por favor ayuda con error sql

PLOP!, no habia visto que ejecutaba dos veces la consulta!
A simple vista parecia tan correcto....
jajajja, pues me ha mareado!
Bueno gracias a la buena vista de Carxl, se te ha resuelto el problema compañer@

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #6 (permalink)  
Antiguo 19/09/2008, 09:32
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: por favor ayuda con error sql

Carxl no se si llorar o reir ,solo se me ocurren dos cosas:
primeramente darte las gracias encarecidamente a ti y a todos los que m,e habéis ayudado con este problema; la verdad que no me había fijado en lo del mysql_query dos veces ¡¡ dios santo¡¡ me da ganas de darme de cabezazos ajajjaj.

Esto demuestra que los problemas más estupidos son los que mas guerra dan a veces:

Voy a poner el código como ha quedado ya que por supuesto ahora si funciona ¡¡ un simple update madre mia ¡¡.

Código:
function update_articles_pedido($article) {

//return count($articles);
  $conn = db_connect();

for ($i=0;$i<count($article);$i++) {
		
echo "ID : ".$article[$i][0]." UNIDADES_".$article[$i][1]."<br>";
echo count($article);
 	$sSQL = "UPDATE  pedidos_articulos   
             				SET unidades='".$article[$i][1]."'
			 				WHERE pedidoid ='".$article[$i][0]."' ";
							 
	$result=mysql_query($sSQL)or die(mysql_error());

	if (!$result)
	return 0;
	
	
	}
				  

	return 1;
} 

?>
No se si abrir un nuevo post o comentarlo aquí , creo que lo comentaré aquí y haber si alguien sabe. Resulta que esta función recibe los parametros de un formulario que se genera dinamicamente tras otra consulta SELECT la bd. El tema es muy simple , si donde invoco a la función update_articles_pedido($article) : lo escribo sin $_POST['article'] funciona pero si pongo:
function update_articles_pedido($_POST['article']) . NO FUNCIONA
Yo siempre había usado $_POST[$var] para recojer las variables llegadas por formulario ¿como en este caso no funciona?.


Código:
update_articles_pedido($article)

el formulario lo pongo aquí aunque ya esta en otros posts

<?
if (!session_is_registered("admin_user")) 
{
	echo "XTT";
	exit;
}
panel_control ();
if ($_GET['ref'])
	$ref=$_GET['ref'];
else
	$ref=$_POST['ref'];
//Comprobamos si hay artículos en el pedido	
 if (!$article=edit_pedido($ref))
 {
 	echo "<h3>Pedido vacío, por favor añada artículos</h3>";
 	exit;
}
if (isset($ok))  {
//update_articles_pedido($art,$ref);


	if ( !update_articles_pedido($art) )
 	echo "<p>No se han podido actualizar los artículos, disculpe las molestias, inténtelo más tarde, Gracias</p>";
	
 	else
 	echo "<p>Pedido actualizado correctamente</p>"; 
	
	
	//update_articles_pedido($art,$ref);


}

 ?>
 <form name='edit' action="<? $PHP_SELF ?>">
 <table cellpadding="16" cellspacing="8">
 
 <tr>
 <th> Pedido Ref: <? echo $ref ?> </th>
 </tr>
 <?
$i=0;

 foreach ($article as $row){
   echo "<td colspan='2'><input type='hidden' name='art[$i][0]' value='$row[pedidoid]'></td>";

  echo "<td colspan='2'><input type='text' name='art[$i][1]' value='$row[unidades]'></td>";
 echo "<td><b>Nombre:</b>$row[nombre]</td>";
 echo "<td><b>Precio:</b>$row[precio]</td> </tr>";
 $i++;

}

?>
<tr> 	
<td colspan='4' align="center"><input type="submit" name="ok"  value="ACTUALIZAR PEDIDO"/></td>
</tr>	
			
<input type="hidden" name="ref"  value="<? echo $ref ?>"/>	


</form>
<tr>
<td><a href="consulta_pedidos.php?ref=<? echo $ref ?>"> Volver al pedido</a> </td>
</tr>
</table>

Saludos y mil gracias
  #7 (permalink)  
Antiguo 19/09/2008, 09:44
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: por favor ayuda con error sql

Cita:
Iniciado por Dundee Ver Mensaje
primeramente darte las gracias encarecidamente a ti y a todos los que m,e habéis ayudado con este problema;
Pa' eso estamos Dundee, me alegra que se haya solucioando tu problema

Y en cuanto a lo que preguntas, creería yo que esa variable con el array POST se está limpiando en algún momento... es lo que se me ocurre.. prueba haciendo "echo"

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #8 (permalink)  
Antiguo 19/09/2008, 16:43
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: por favor ayuda con error sql

Cita:
Iniciado por Carxl Ver Mensaje
Pa' eso estamos Dundee, me alegra que se haya solucioando tu problema

Y en cuanto a lo que preguntas, creería yo que esa variable con el array POST se está limpiando en algún momento... es lo que se me ocurre.. prueba haciendo "echo"

Saludos
Hola , no se a que te refieres con limpiando, simplemente se envía un formulario con esa variable y yo creía que se recojía con $_POST [] , pero en este caso no se porque no funciona.

(si hago echo $_POST[$var] no sale nada de nada)
Un saludo y gracias
  #9 (permalink)  
Antiguo 19/09/2008, 16:45
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: por favor ayuda con error sql

no sera por que se duplica el mysql_query....
$sSQL =mysql_query ( "UPDATE pedidos_articulos
SET unidades='$row[1]'
WHERE pedidoid='$row[0]' ");
$result=mysql_query($sSQL)or die(mysql_error());

mejor no seria:
$sSQL ="UPDATE pedidos_articulos
SET unidades='$row[1]'
WHERE pedidoid='$row[0]' ";
$result=mysql_query($sSQL)or die(mysql_error());

ESTO ES TEMA DE OTRO POST..... VA.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
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 01:46.