Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] como solucionar Warning: mysql_fetch_array(): supplied argument is not a valid MySQL

Estas en el tema de como solucionar Warning: mysql_fetch_array(): supplied argument is not a valid MySQL en el foro de PHP en Foros del Web. Como estan, pues resulta que estaba funcionando perfectamente mi sistema, pero hoy me salio este Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result ...
  #1 (permalink)  
Antiguo 28/08/2013, 09:53
 
Fecha de Ingreso: agosto-2013
Mensajes: 7
Antigüedad: 8 años, 10 meses
Puntos: 0
como solucionar Warning: mysql_fetch_array(): supplied argument is not a valid MySQL

Como estan, pues resulta que estaba funcionando perfectamente mi sistema, pero hoy me salio este Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in, ya me desespere ya que no se lo que sea les pido de su ayuda.


Código PHP:
<?php
 $link 
mysql_connect("----""----""-----");
mysql_select_db("sistema"$link);
$capitulo = ($_POST['capitulo'] == "TODOS") ? "" "and capitulo= '"$_POST['capitulo']. "'";

$result mysql_query("SELECT programas, presupuesto, capitulo" .
"SUM(total) as total FROM inventario".
 
"WHERE programas= '".$_POST['programas']."' and presupuesto= '".$_POST['presupuesto']."' "$capitulo.
"GROUP BY programas, presupueso, capitulo", ($link));                            
if (
$row mysql_fetch_array($result))
{
 echo 
"<center><table border = '1'> \n";
 echo 
"<tr><td>Programa</td><td>Presupuesto</td><td>Capitulo</td><td>Total</td></tr> \n";
do {
echo 
"<tr><td><center>" $row["programas"] . "</td></center><td><center>" $row["presupuesto"] . "</td></center><td><center>" $row["capitulo"] . "</td></center><td><center>" $row["total"] . "</td></center></tr> \n";
} while (
$row mysql_fetch_array($result));
echo 
"</table> </center> \n";
} else {
echo 
"¡ No se ha encontrado ningún registro !";
}
?>
  #2 (permalink)  
Antiguo 28/08/2013, 09:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 2 meses
Puntos: 2534
Respuesta: como solucionar Warning: mysql_fetch_array(): supplied argument is not a v

Por favor aprende a depurar tus consultas.
Código PHP:
Ver original
  1. $sql = 'la consulta de SQL a ejecutar';
  2. $result = mysql_query($sql) or die('ERROR: ' . mysql_error() . "; SQL=$sql");

Ya con eso nos evitas adivinar el problema y te sirve para saber que haces mal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/08/2013, 09:57
tfe
 
Fecha de Ingreso: enero-2008
Mensajes: 26
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: como solucionar Warning: mysql_fetch_array(): supplied argument is not a v

Hola.

Tendrás un error en la consulta SQL.

para debuggear lo más facil es hacer:

Código PHP:
mysql_query("ton sql") or die(mysql_error()) 
De todas formas, visto el codigo php, tendrías que:
  • utilizar mysql_real_escape_string para proteger los datos
  • verificar los valores antes de utilizarlos en la consulta directamente
  #4 (permalink)  
Antiguo 28/08/2013, 11:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 14 años, 7 meses
Puntos: 2658
Respuesta: como solucionar Warning: mysql_fetch_array(): supplied argument is not a v

Digamos que la consulta tiene tantos errores escondidos entre el PHP que se hace difícil decidir por dónde empezar...
Primero consejo del buen desarrollador: Jamás generes la query en la misma sentencia de ejecución. Cargala en una variable:
Código PHP:
Ver original
  1. $query = "SELECT programas, presupuesto, capitulo, ";
  2. $query .= "SUM(total) as total FROM inventario ";
  3. $query .= "WHERE programas= '$_POST['programas']' AND ";
  4. $query .= "presupuesto= '$_POST['presupuesto']'";
  5. $query .= "GROUP BY programas, presupueso, capitulo";
de ese modo, si debes revisar su contenido es mucho más fácil.
Por otra parte, si yo tomase tu consulta tal y como la construyes, y tratase de ver qué queda armado, me encontraría con esto:
Código SQL:
Ver original
  1. SELECT programas, presupuesto, capituloSUM(total) AS total
  2. FROM inventarioWHERE programas= '".$_POST['programas']."'
  3. AND presupuesto= '".$_POST['presupuesto']."' ". $capituloGROUP BY
  4. programas, presupueso, capitulo
Como podrás ver, hay columnas pegadas a las clausulas, y eso no lo inventé yo. Es lo que tu mismo estás poniendo, si te fijas con cuidado (en mi ejemplo he corregido todo eso).
Además, te falta una coma entre dos columnas, y la columna "presupuesto" está siendo invocada en el GROUP BY como "pesupuesto"... le falta una "r".
Todo esto no exime de un error imposible de prever, que es el de la variable "$capitulo", cuyo valor para mi es desconocido, y no sé qué errores puede agregar. Al mismo tiempo, como no podemos asegurar que las variables en sí no estén aportando errores adicionales (si existen, por ejemplo, apóstrofos), sin validar todo, es imposible saber con certeza que otras cosas pueden fallar.

Cuando generes el debuggeo que te sugieren, estoy seguro de que mostrará un error de sintaxis.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql, registro, select, solucionar, warning
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 22:02.