Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/07/2008, 07:40
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 9 meses
Puntos: 32
Respuesta: Error con mysql_fetch_array?

Cita:
Iniciado por Wenaptic Ver Mensaje
Hola conoci este foro por el blog de enrique.

Espero que me puedan dar una mano con este dilema...
Mi clase hace una conexion con una base de datos, realiza consultas, cuenta numero de registros y columnas, entre otros metodos.

Bien, ahora tengo el siguiente problema: cuando quiero extraer la consulta y almacenarla en un array con el metodo extraer registro, el interprete de php me devuelve un warning diciendo que el argumento pasado ($this->resultado, en este caso) no es un recurso valido de MySQL, textualmente seria:Warning: mysql_fetch_array() supplied argument is not a valid MySQL result resource in line 30.
Esta es una de mis primeras clases, asi que por favor tenganme paciencia ;)
Saludos y a las ordenes!!!
Que tal Wenaptic

Por lo pronto me gustaría que colocaras el código de ejemplo que usas para probar la clase.

Hasta el momento lo que vi mal fue
  • Desde el constructor recibes por parámetro una variable base_datos que no es la misma que asignas al atributo baseDatos.
  • El atributo de resultado no lo defines al inicio de la clase (aunque no debería suceder nada, ya que lo crearía dinámicamente).
  • private function conectarBaseDatos(); tiene un ; demás al final
  • mysql_connect_database($baseDatos, $this->descriptor); está llamando a una variable $baseDatos y no a un atributo $this->baseDatos
  • Tienes un solo "=" en vez de "==" en el if ($fila = mysql_fetch_array($this->resultado, MYSQL_ASSOC))

Te sugiero usar un IDE como Eclipse (o Zend Studio en su versión comercial), ya que te avisan cuando suceden este tipo de distracciones.

Te paso en limpio las correcciones rápidas que hice (ojo, no lo probé, tampoco estoy seguro al 100% si es lo que esperas que haga):

Código PHP:
<?php
class ServidorBaseDatos
{
    private 
$servidor;
    private 
$usuario;
    private 
$pass;
    private 
$baseDatos;
    private 
$consulta;
        private 
$resultado;

    function 
__construct($servidor$usuario$pass$base_datos)
    {
        
$this->servidor $servidor;
        
$this->usuario $usuario;
        
$this->pass $pass;
        
$this->baseDatos $base_datos;
        
$this->conectarBaseBatos();
    }
    private function 
conectarBaseDatos()
    {
        
$this->descriptor mysql_connect($this->servidor$this->usuario$this->pass);
        
mysql_connect_database($this->baseDatos$this->descriptor);
    }
    public function 
consulta($consulta)
    {
        
$this->resultado mysql_query($consulta$this->descriptor);
    }
    public function 
extraerRegistro()
    {
        
$fila mysql_fetch_array($this->resultadoMYSQL_ASSOC);
        if ( isset(
$fila) ){
            return 
$fila;
        }else{
            return 
false;
        }
    }
    public function 
numeroFilas()
    {
        return 
mysql_num_rows($this->resultado);
    }
    public function 
numeroColumnas()
    {
        return 
mysql_num_fields($this->descriptor);
    }
    public function 
filasAfectadas()
    {
        return 
mysql_affected_rows($this->descriptor);
    }
    public function 
ultimaFila()
    {
        return 
mysql_insert_id($this->descriptor);
    }
}
?>
__________________
Blog phpsenior.com Cursos a Distancia surforce.com