Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Og. en 26 Julio 2009, 06:24 am



Título: error con mysql_fetch_array
Publicado por: Og. en 26 Julio 2009, 06:24 am
bueno, este pedaso es de una clase en un manual de php
Código
  1. public function consulta($consulta)
  2. {
  3. $this->resultado = mysql_query($consulta,$this->descriptor);
  4. }
  5. public function extraer_registro()
  6. {
  7. if ($fila = mysql_fetch_array($this->resultado,MYSQL_ASSOC)) {
  8. return $fila;
  9. } else {
  10. return false;
  11. }
  12. }
bueno, el problema es que al intentar llamar el resultado de una consulta me da este error:

Citar
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/np/www/SQL/index.php on line 29

alguna ayuda?


Título: Re: error con mysql_fetch_array
Publicado por: RadicalEd en 26 Julio 2009, 07:20 am
Imprime en una variable que tipo de objeto te retorna la función extraer_registro???


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 26 Julio 2009, 10:27 am
Pero unicamente es un warning, si te funciona bien: error_reporting(0); y listo.
O si no, fetch_array solo acepta consultas de seleccion, osea tienes que haber hecho: SELECT * FROM `mi_tabla`ORDER BY `id` DESC... por ejemplo.

Aunque desconozco un poco el uso de clases el PHP, creo que ahí el warning, no se :S


Título: Re: error con mysql_fetch_array
Publicado por: & eDu & en 26 Julio 2009, 13:54 pm
bueno, este pedaso es de una clase en un manual de php
Código
  1. public function consulta($consulta)
  2. {
  3. $this->resultado = mysql_query($consulta,$this->descriptor);
  4. }
  5. public function extraer_registro()
  6. {
  7. if ($fila = mysql_fetch_array($this->resultado,MYSQL_ASSOC)) {
  8. return $fila;
  9. } else {
  10. return false;
  11. }
  12. }
bueno, el problema es que al intentar llamar el resultado de una consulta me da este error:

Citar
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/np/www/SQL/index.php on line 29

alguna ayuda?
Hay poco codigo y no logro entender lo que se saca de la DB, pero tu no puedes devolver $fila , se supone que es una array, deberás debolver
Código
  1. return $fila['loquesea'];


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 26 Julio 2009, 14:13 pm
bueno, este pedaso es de una clase en un manual de php
Código
  1. public function consulta($consulta)
  2. {
  3. $this->resultado = mysql_query($consulta,$this->descriptor);
  4. }
  5. public function extraer_registro()
  6. {
  7. if ($fila = mysql_fetch_array($this->resultado,MYSQL_ASSOC)) {
  8. return $fila;
  9. } else {
  10. return false;
  11. }
  12. }
bueno, el problema es que al intentar llamar el resultado de una consulta me da este error:

Citar
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/np/www/SQL/index.php on line 29

alguna ayuda?

Ademas, tendriamos que ver la consulta que haces, pon el code entero porfavor.


Título: Re: error con mysql_fetch_array
Publicado por: Og. en 26 Julio 2009, 15:13 pm
esta es la clase:
Código
  1. <?php
  2. class Servidor_Base_Datos
  3. {
  4. private $servidor;
  5. private $usuario;
  6. private $pass;
  7. private $base_datos;
  8. private $descriptor;
  9. private $resultado;
  10. function __construct($servidor,$usuario,$pass,$base_datos)
  11. {
  12. $this->servidor = $servidor;
  13. $this->usuario = $usuario;
  14. $this->pass = $pass;
  15. $this->base_datos = $base_datos;
  16. $this->conectar_base_datos();
  17. }
  18. private function conectar_base_datos()
  19. {
  20. $this->descriptor = mysql_connect($this->servidor,$this->usuario,$this->pass);
  21. mysql_select_db($this->base_datos,$this->descriptor);
  22. }
  23. public function consulta($consulta)
  24. {
  25. $this->resultado = mysql_query($consulta,$this->descriptor);
  26. }
  27. public function extraer_registro()
  28. {
  29. if ($fila = mysql_fetch_array($this->resultado,MYSQL_ASSOC)) {
  30. return $fila;
  31. } else {
  32. return false;
  33. }
  34. }
  35. public function numero_filas()
  36. {
  37. return mysql_num_rows($this->resultado);
  38. }
  39. public function filas_afectadas()
  40. {
  41. return mysql_affected_rows($this->descriptor);
  42. }
  43. }
  44. ?>
y al hacer esto me da el error:

Código
  1. <?PHP
  2. include("clase_mysql.php");
  3. $servidor = "localhost";
  4. $usuario = "root";
  5. $pass = "---------";
  6. $base_datos = "ejemplos";
  7. $usuario = new Servidor_Base_Datos($servidor,$usuario,$pass,$base_datos);
  8. ?>


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 26 Julio 2009, 15:54 pm
Que yo sepa, tu recojes los datos y lo pasas a $this->... con la función __construct.
Pero en cambio no recojes los datos con ninguna función.

EDIT: Además usuario lo repites, cuando es una variable que contiene datos.


Título: Re: error con mysql_fetch_array
Publicado por: Og. en 26 Julio 2009, 17:40 pm
Que yo sepa, tu recojes los datos y lo pasas a $this->... con la función __construct.
Pero en cambio no recojes los datos con ninguna función.

EDIT: Además usuario lo repites, cuando es una variable que contiene datos.

al hacer esto:
Código
  1. $servidor = "localhost";
  2. $usuario = "root";
  3. $pass = "---------";
  4. $base_datos = "ejemplos";
  5. $usuario = new Servidor_Base_Datos($servidor,$usuario,$pass,$base_datos);
precisamente la linea
Código
  1. $usuario = new Servidor_Base_Datos($servidor,$usuario,$pass,$base_datos);
me manda al __construct
y almacena los datos, por eso los otros metodos(son las funciones, pero dentro de una clase se llaman metodos) hacen referencia a lo obtenido en el construct, por eso no pide ningun otro dato ecepto en
Código
  1. $usuario->consulta($consulta)
  2. //en este se incluye la consulta que deseo hacer hacia la base de datos

pero aun asi lo que no entiendo es la causa del error :/


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 26 Julio 2009, 17:42 pm
Pero postea todo lo que te dice cuando ejecutas ese archivo .php


Título: Re: error con mysql_fetch_array
Publicado por: Og. en 26 Julio 2009, 17:44 pm
solo me dice esto:
Citar
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/np/www/SQL/index.php on line 29


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 26 Julio 2009, 17:47 pm
Pero solo es un warning, te funciona igualmente el script?


Título: Re: error con mysql_fetch_array
Publicado por: Og. en 26 Julio 2009, 17:55 pm
para meter usuarios, crear tablas etc... si
pero para recoger datos no


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 26 Julio 2009, 18:01 pm
para meter usuarios, crear tablas etc... si
pero para recoger datos no

El error es que no declaras bien la busqueda...
¿Que pones en la busqueda?


Título: Re: error con mysql_fetch_array
Publicado por: Og. en 26 Julio 2009, 19:37 pm
para meter usuarios, crear tablas etc... si
pero para recoger datos no

El error es que no declaras bien la busqueda...
¿Que pones en la busqueda?
esque aunque haga un select o no, me aparece el error, en cuanto hago el $usuario = new Servidor_Base_Datos($servidor,$usuario,$pass,$base_datos);
me suelta el error


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 26 Julio 2009, 20:01 pm
Has probado de poner variables en public?


Título: Re: error con mysql_fetch_array
Publicado por: Og. en 26 Julio 2009, 20:40 pm
Has probado de poner variables en public?
no, lo voy a probar pero creo que va a resultar lo mismo por que estoy llamando a las variables desde la misma clase en las que estan


Título: Re: error con mysql_fetch_array
Publicado por: Pazador en 27 Julio 2009, 03:34 am
bueno, este pedaso es de una clase en un manual de php
Código
  1. public function consulta($consulta)
  2. {
  3. $this->resultado = mysql_query($consulta,$this->descriptor);
  4. }
  5. public function extraer_registro()
  6. {
  7. if ($fila = mysql_fetch_array($this->resultado,MYSQL_ASSOC)) {
  8. return $fila;
  9. } else {
  10. return false;
  11. }
  12. }
bueno, el problema es que al intentar llamar el resultado de una consulta me da este error:

Citar
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/np/www/SQL/index.php on line 29

alguna ayuda?
Hay poco codigo y no logro entender lo que se saca de la DB, pero tu no puedes devolver $fila , se supone que es una array, deberás debolver
Código
  1. return $fila['loquesea'];

Creo yo que aqui ya dijeron la respuesta  ;D
y procura usar mysql_fetch_assoc, genera un array mas pequeño, es bastante util si queremos reducir consumo de recursos


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 27 Julio 2009, 10:11 am
bueno, este pedaso es de una clase en un manual de php
Código
  1. public function consulta($consulta)
  2. {
  3. $this->resultado = mysql_query($consulta,$this->descriptor);
  4. }
  5. public function extraer_registro()
  6. {
  7. if ($fila = mysql_fetch_array($this->resultado,MYSQL_ASSOC)) {
  8. return $fila;
  9. } else {
  10. return false;
  11. }
  12. }
bueno, el problema es que al intentar llamar el resultado de una consulta me da este error:

Citar
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/np/www/SQL/index.php on line 29

alguna ayuda?
Hay poco codigo y no logro entender lo que se saca de la DB, pero tu no puedes devolver $fila , se supone que es una array, deberás debolver
Código
  1. return $fila['loquesea'];

Creo yo que aqui ya dijeron la respuesta  ;D
y procura usar mysql_fetch_assoc, genera un array mas pequeño, es bastante util si queremos reducir consumo de recursos

No esta bien pero no se supone que es el error, porque en teoria al no poner el contenido de la tabla del array tendria que devolverte el valor Array.

Y recuerda que para mostrar un return necesitas usas echo o printf :)


Título: Re: error con mysql_fetch_array
Publicado por: Og. en 27 Julio 2009, 18:13 pm

Creo yo que aqui ya dijeron la respuesta  ;D
y procura usar mysql_fetch_assoc, genera un array mas pequeño, es bastante util si queremos reducir consumo de recursos
bueno, ya probe poniendo retun array["name"]
y nada, el problema es que
me da error al llamar la clase, antes de que use el metodo exraer registro, ya me sale el warning entonces
voy a omitir el warning con una @ y lo pruebo aver que pasa  :-\


Título: Re: error con mysql_fetch_array
Publicado por: Erik# en 27 Julio 2009, 18:38 pm
Lo que llevo diciendote desde el inicio xD : error_reporting(0); al inciio del code :)


Título: Re: error con mysql_fetch_array
Publicado por: Hadess_inf en 27 Julio 2009, 21:25 pm
Código
  1. public function consulta($consulta)
  2. {
  3. $this->resultado = mysql_query($consulta,$this->descriptor);
  4. }
  5. public function extraer_registro()
  6. {
  7. if ($fila = mysql_fetch_array($this->resultado,MYSQL_ASSOC)) {
  8. return $fila;
  9. } else {
  10. return false;
  11. }
  12. }

Que pretendes hacer ¿?
- Recuperar la primera fila ¿?
- Recuperar la ultima fila ¿?
- Recuperar todas las filas ¿?
- Recuperar una fila especifica ¿?

Algo asi ¡?

Código
  1. public function extraer_registro()
  2. {
  3.       $num = mysql_num_rows($this->resultado);
  4.       if($num==0)
  5.       { return false; }
  6.       else
  7.       {
  8.              while($row=mysql_fetch_array($this->consulta))
  9.              {
  10.                     return $row;
  11.              }
  12.       }
  13. }
¿?¿?¿?¿?