Cita:
Iniciado por Wenaptic
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->resultado, MYSQL_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);
}
}
?>