martes, 8 de febrero de 2011

Clase de conexión php-mysql

Bueno, como estaba aburrido y las clases de conexion con mysql y php no son muy completas o bien no se adaptan a mis necesidades, me dio por hacer esta que espero que a alguien le sirva de ayuda.


El codigo acontinuación.

<?php
class conSQL
{
private $usuarioDB='';
private $claveDB='';
private $hostDB='';
private $baseDB='';
public $consulta;
public $numfield;
public $affected;
public $numrows;
public $sql;
public $insertid;
private $conexion;

public function __construct($sql)
{
$this->sql = $sql;
}

private function conecta()
{
$this->conexion = @mysql_connect($this->hostDB,$this->usuarioDB,$this->claveDB) or die ("Base de datos en mantención.");
@mysql_select_db($this->baseDB);
return $this->conexion;
}

public function desconecta()
{
return mysql_close($this->conecta());
}

public function executeQuery()
{
$this->conecta();
$this->consulta = mysql_query($this->sql);
$this->numfield = mysql_num_fields($this->consulta);
$this->numrows = mysql_num_rows($this->consulta);
$this->desconecta();
$i=0;
$arreglo = array();
if ($rs = mysql_fetch_array($this->consulta)) {
do {
for ($j=0;$j<$this->numfield;$j++) {
$nombrecampo = mysql_field_name($this->consulta,$j);
$arreglo[$i][$nombrecampo] = $rs[$nombrecampo];
if ($j == $this->numfield) { $j = 0;}
}
$i++;
} while ($rs = mysql_fetch_array($this->consulta));
}
mysql_free_result($this->consulta);
return $arreglo;
}

public function executeUpdate()
{
$this->conecta();
$this->consulta = @mysql_query($this->sql);
$this->insertid = mysql_insert_id();
$this->affected = mysql_affected_rows();
$this->desconecta();
return $this->consulta;
}
}
?>

Modo de empleo:

Para este ejemplo simularemos una consulta tipo "SELECT" para que retorne algo, luego se mostrara una para el modo INSERT o UPDATE, que generalmente no retornan nada, excepto la cantidad de filas insertadas y/o actualizadas ah! y el ultimo insert realizado.

Ejemplo de SELECT.

require_once("/path/to/file/of/class/to/conexion.php");
$consulta="SELECT nombre,apellido FROM usuario";
$db = new conSQL($consulta);
$retorno = $db->executeQuery();
if ( $db->numrows > 0 )
{
foreach ( $retorno as $row )
{
echo $row['nombre']." ";
echo $row['apellido']."<br />";
}
}

?>

Ejemplo de UPDATE.
<?php

require_once("/path/to/file/of/class/to/conexion.php");
$consulta="UPDATE tbl1 SET apellido='macabeillo' WHERE nombre='juan'";
$db = new conSQL($consulta);
$db->executeUpdate();
if ( $db->affected > 0 ) // o tambien podria ser "if ( $db->affected )"
{
echo "El usuario ha sido actualizado";
}
?>

Ejemplo de INSERT.
<?php

require_once("/path/to/file/of/class/to/conexion.php");
$consulta="UPDATE tbl1 SET apellido='macabeillo' WHERE nombre='juan'";
$db = new conSQL($consulta);
$db->executeUpdate();
if ( $db->insertid > 0) // Al igual que UPDATE esto se puede hacer "if ( $db->insertid )
{
echo "El ultimo ingreso en la base de datos es: ".$db->insertid;
}

?>