Foros del Web » Programando para Internet » PHP »

Error : Warning: mysql_fetch_row()

Estas en el tema de Error : Warning: mysql_fetch_row() en el foro de PHP en Foros del Web. Hola a todos tengo un problemilla espero que alguien me heche una mano, instale AppServ en mi pc y estaba haciendo una base de datos ...
  #1 (permalink)  
Antiguo 17/10/2006, 09:36
Avatar de Stephano  
Fecha de Ingreso: junio-2005
Ubicación: Arequipa
Mensajes: 392
Antigüedad: 18 años, 10 meses
Puntos: 3
Error : Warning: mysql_fetch_row()

Hola a todos tengo un problemilla espero que alguien me heche una mano, instale AppServ en mi pc y estaba haciendo una base de datos de registros pero cuando hago una consulta me vota este error:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\main.php on line 63

esto es lo que tengo en la linea 63:

while ($registro = mysql_fetch_row($resultado)){

ahi me dice que mysql_fetch_row() no es un argumento valido para Mysql
estoy haciendo algo mal?
__________________
www.percyweb.com - mi Blog
  #2 (permalink)  
Antiguo 17/10/2006, 09:38
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Stephano

Hasta donde yo sé (que es más bien poco) esos errores suelen producirlos la sentencia SQL que estén usando. Revisala y si no das con el error ponlo aquí para que los expertos puedan opinar.

Saludos,
  #3 (permalink)  
Antiguo 17/10/2006, 10:07
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 3 meses
Puntos: 0
¿Estas seguro de que $resultado existe? ¿puedes correr la consulta sobre la propia base de datos para ver que te devuelve?
  #4 (permalink)  
Antiguo 17/10/2006, 10:34
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
Te esta diciendo que hay algo mal en $resultado.
Pegá tu consulta, y tu nombre de base de datos y tabla.
  #5 (permalink)  
Antiguo 17/10/2006, 11:21
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
kiza te ekivokaste en e $resultado
aveces ke me sale eso, ejemplo

$resultado=("SELECT * tabla WHERE linea < 50 LIMIT 3",$conexion);

ke me paso ahi? se me olvida poner el FROM, son cosas simples ke te hechan todo a perder
saludos
  #6 (permalink)  
Antiguo 17/10/2006, 11:24
Avatar de Stephano  
Fecha de Ingreso: junio-2005
Ubicación: Arequipa
Mensajes: 392
Antigüedad: 18 años, 10 meses
Puntos: 3
este es el código completo a ver cual es el error:

Código PHP:
<?
# recogemos en una variable el nombre de BASE DE DATOS

$base="empresas";

# recogemos en una variable el nombre de la TABLA

$tabla="registros";


# establecemos la conexion con el servidor

$conexion=mysql_connect("localhost","root","123");

#asiganamos la conexión a una base de datos determinada

mysql_select_db($base,$conexion);

# establecemos el criterio de SELECCION
# en este caso los campos Nombre, Apellido1, Apellido2 unicamente

$resultadomysql_query("SELECT fecha, partida, pais_origen, cantidad, producto, importador, canal FROM $tabla" ,$conexion);


# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML)

echo "<table align=center border=1>";

# establecemos un bucle que recoge en un array
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
# utilizamos en esta ocasión «mysql_fetch_row»
# en vez de «mysql_fetch_array» para EVITAR DUPLICADOS
# recuerda que esta ultima función devuelve un array escalar
# y otro asociativo con los resultados

while ($registro mysql_fetch_row($resultado)){
       
       
# insertamos un salto de línea en la tabla HTML

       
echo "<tr>";

       
# establecemos el bucle de lectura del ARRAY
       # con los resultados de cada LINEA
       # y encerramos cada valor en etiquetas <td></td>
       # para que aparezcan en celdas distintas de la tabla

       
foreach($registro  as $clave){
       echo 
"<td>",$clave,"</td>";
 }
}
echo 
"</table>";


# cerramos la conexion

 
mysql_close(); 

?>
__________________
www.percyweb.com - mi Blog
  #7 (permalink)  
Antiguo 17/10/2006, 11:27
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
no se, yo en mis consultas pongo todo junto, sin espacio, intenta asi:

$resultado= mysql_query("SELECT fecha,partida,pais_origen,cantidad,producto,import ador,canal FROM $tabla",$conexion);

bueno, creo ke tambien cuenta ke existN LAS tablas y ke halla registros. saludos
  #8 (permalink)  
Antiguo 17/10/2006, 11:36
Avatar de Stephano  
Fecha de Ingreso: junio-2005
Ubicación: Arequipa
Mensajes: 392
Antigüedad: 18 años, 10 meses
Puntos: 3
gracias a todos por responder
probe como dice MoDoRro, pero no me resulta... siguie el mismo error:
__________________
www.percyweb.com - mi Blog
  #9 (permalink)  
Antiguo 17/10/2006, 12:42
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
Estas seguro que tu base se llama empresas?
Es decir, cambiaste los valores de base, tabla, host, usuario(root), (password (123), etc?

Probaste con un mysql_fetch_array??

Bueno para ver sin el error tu codigo poné antes del mysql_fetch_row un @ de esta manera @mysql_fetch_row para poder al menos seguir armando tu codigo y luego resolver tu problema.
  #10 (permalink)  
Antiguo 17/10/2006, 12:58
Avatar de Stephano  
Fecha de Ingreso: junio-2005
Ubicación: Arequipa
Mensajes: 392
Antigüedad: 18 años, 10 meses
Puntos: 3
Estan correcto los datos del usuario y base de datos por que ya tengo otro script donde inserto los datos y trabaja muy bien. Intente como Array y me vota el mismo error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\main.php on line 63

ahora le puse el arroba como me indicaste, ya no vota ningun error pero tampoco muestra ningun resultado, solo sale la pagina en blanco
__________________
www.percyweb.com - mi Blog
  #11 (permalink)  
Antiguo 17/10/2006, 14:03
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
Y bueno, entonces tu consulta no trae ningun resultado.....o sea, está mal hecha.
Probá poniendole * en vez de todos los campos, a ver si te trae todo o aun asi no!
  #12 (permalink)  
Antiguo 17/10/2006, 21:06
Avatar de Stephano  
Fecha de Ingreso: junio-2005
Ubicación: Arequipa
Mensajes: 392
Antigüedad: 18 años, 10 meses
Puntos: 3
si funciona cuando pongo * solo con las variables que solicito no funciona, alguien conoce otra manera de hacer ese tipo de consultas?
__________________
www.percyweb.com - mi Blog
  #13 (permalink)  
Antiguo 17/10/2006, 21:38
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
stephano, cuando hagas la consulta puede buscar el error mysql
Simplemente
Código PHP:

mysql_query
("SELECT campo1, campo2, campo3 FROM tabla WHERE condicion = 1") or die(mysql_error());
//Si hubo un error en la consulta, lo q debe estar pasandote, imprime el error 
  #14 (permalink)  
Antiguo 18/10/2006, 03:54
 
Fecha de Ingreso: septiembre-2006
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Prueba sustituyéndo esto:

Código PHP:
$resultadomysql_query("SELECT fecha, partida, pais_origen, cantidad, producto, importador, canal FROM $tabla" ,$conexion); 
Por esto:

Código PHP:
$resultadomysql_query("SELECT fecha, partida, pais_origen, cantidad, producto, importador, canal FROM ".$tabla ,$conexion); 
;)
  #15 (permalink)  
Antiguo 18/10/2006, 06:18
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
PROBALO ASI que a mi me anduvo siempre pefecto

Código PHP:
$bd_servidor "localhost";
$bd_usuario "root";
$bd_contrasenya "123";
$bd_bdname "empresas";
$bd_tabla "registros"

$link mysql_connect($bd_servidor,$bd_usuario,$bd_contrasenya);
mysql_select_db($bd_bdname,$link);

$query"SELECT fecha, partida, pais_origen, cantidad, producto, importador, canal FROM registros";
$resultado mysql_query($query) or die (mysql_error()); 
Y despues llamás a tu while
while ($registro = mysql_fetch_row($resultado)){
  #16 (permalink)  
Antiguo 18/10/2006, 22:38
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
yo siempre hago mi consulta con *
es mejor, si no te funciona, kiere decir ke un campo esta mal escrito o es nulo (no existe)
saludos
  #17 (permalink)  
Antiguo 19/10/2006, 06:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por MoDoRrO Ver Mensaje
yo siempre hago mi consulta con *
es mejor, si no te funciona, kiere decir ke un campo esta mal escrito o es nulo (no existe)
saludos
Supongo que sabras que es "*" .. con eso indicas que vas a usar TODOS los campos que contenga la tabla implicada de tu BBDD y consulta SQL realizada.

Realmente NO en todos los casos necesitas de todos los campos .. así que hacer siempre o por defecto ese tipo de consultas SQL llamando a todos los campos (columnas) de tu tabla .. realmente no es nada óptimo.

Lo recomendable es llamar en tu consulta SQL sólo a los campos que realmente necesites .. por supuesto si necesitas todos usa "*". Escribir un poco más de "código" una vez y perde ese tiempo tú .. optimiza tu aplicación -para siempre- .. recuerdalo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #18 (permalink)  
Antiguo 20/10/2006, 23:38
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
si sabia para ke servia el * pero no sabia que perdia optiizmo, y si, ahora me imagino por ke, se hace la cosulta a todos los campos, y kiza aveces solo necesitas 1 o 2. aokey
gracias cluster!
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 02:31.