[PHP] Clases, Herencia y DB's

kas

Buenas, vuelvo al ataque.

Tengo una clase base para la conexion a la db y las funciones tipicas (query, free, num rows, ..).

He hecho una segunda clase, que herede de ella, y que contiene las funciones que mi aplicacion web hara contra la db.

El caso es que yo uso mi clase y no da error al conectar, se crea el LINK perfectamente, pero cuando llamo a mis funciones, parece que el LINK esta vacio (entendiendo como LINK el resultado de ejecutar mysql_connect.)

class.DBAccess.php

class DBAcces
{
	// Config
	private $_cfg;
	
// DB Oject
private $_dbi;
	
public function GetCfg() { return $this->_cfg; }

//
// Constructor
//
public function __construct($_cfg) { $this->_cfg = $_cfg; }

public function Connect()
{
	// Intentar conectar
	$this->_dbi = mysql_connect(
				$this->_cfg->dbhost,
				$this->_cfg->dbuser,
				$this->_cfg->dbpw)
			or die("Unable to connect to DataBase.");
					
	if(!$this->_dbi) die("Connection Failed");
				
	// Seleccionar la base de datos
	mysql_select_db($this->dbname, $this->_dbi);
	var_dump($this->_dbi);
}

public function Disconnect()
{ 
   mysql_close($this->_dbi);
}

//
// Envia una consulta SQL a la DB y devuelve el resultado
//
public function Query($query)
{
	$res = mysql_query($query, $this->_dbi);
	return $res;        
}
   
// Devuelve el numero de filas del resultado
public function NumRows($res)
{
	return mysql_num_rows($res);
}

//
// Devuelve las filas del resultado como una matriz asociada.
//
public function FetchArray($res)
{
	return mysql_fetch_array($res);
}

//
//Devuelve las filas del resultado como una matriz
//
public function FetchRow($res)
{
    $rows = mysql_fetch_row($res);
    return $rows;
}

//
// Devuelve el numero de filas afectadas por la ultima operacion MySQL
//
public function AffectedRows()
{
    $res = mysql_affected_rows();
    return $res;
}

//
// Libera la memoria utilizada para realizar una consulta
//
public function FreeResult($res)
{
    mysql_free_result($res);
}
}

class.DBLibrary.php

class DBLibrary extends DBAcces
{
	public function __construct($config)
	{
		// Instanciar la clase Base
		parent::__construct($config);
	}
	
//
// Devuelve un boolean indicando si el usuario es correcto
//
public function UserLogin($name, $pw)
{
	// Get
	$query = "SELECT id FROM users WHERE name='" .$name. "' and pw='" .$pw."'";
	$res = $this->Query($query);
	//Check
	$logged = ($this->NumRows($res) == 1);
	if ($logged != false)
	{
		$query_resut = $this->FetchArray($res);
		$logged = $query_resut['id'];
	}
	// Return
	$this->FreeResult($res);
	return $logged;
}
}

index.php

$db = new DBLibrary($cfg);
$db->Connect();
$action = 'nav';
if ( isset( $get['action'] ) ) $action = $get['action'];

// Se viene de un formulario con esos valores.
if ($action == 'login')
{
	$db->UserLogin($post['theName'],$post['thePw'],$post['thAlg'],$post['theKey']);
}

Resultado:


Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:...\includes\class.DBAcces.php on line 43

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:#...\includes\class.DBAcces.php on line 50

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:...\includes\class.DBAcces.php on line 84

Alguna idea?

kas

nada borrad el post, tengo variables mal escritas y por eso no pilla nada (en especial el dbname ¬¬).

Usuarios habituales

  • kas