Archivos para php

Llamar Store Procedure en MYSQL desde PHP

Bueno de hace tiempo atras tuve esta inquietud es algo básico para empezar, antes debo dar gracias a Razo Duke12
que anteriormete ya se habia encaminado con esto de como acceder a store procedures en mysql desde php, cito el post,Mysqli – Mysql – PHP – Sto
red Procedures. en lo particular la idea era acceder sin usar Mysqli y aprovechar las bondades de ADODB(como capa de abstracción de datos).Gracias a Duke12 que me brindo su ayuda. Luego de esta corta introducción describimos lo hasta ahora logrado.

1. descargar ADODB copiar la carpeta dentro el direcctorio que contiene nuestro proyeto

para los ubunteros : ~$ sudo mv adodb.xxx /opt/lampp/htdocs/poo_php (este path es por que configure php,apache,mysql con XAMMP en este enlace se detalla su configuración en ubuntu ).

2. Creamos la base de datos ejemplo en mysql y dentro de ella la tabla EMPLEADOS y luego el store procedure

– Estructura de tabla para la tabla `empleados`

CREATE TABLE `empleados` (

`id_empleado` int(5) NOT NULL auto_increment,

`nombre` varchar(200) collate latin1_general_ci NOT NULL,

`direccion` varchar(200) collate latin1_general_ci NOT NULL,

`edad` int(5) NOT NULL,

`email` varchar(200) collate latin1_general_ci NOT NULL,

PRIMARY KEY (`id_empleado`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;

– Volcar la base de datos para la tabla `empleados`

INSERT INTO `empleados` VALUES (1, ‘Isabel’, ‘tucuman 565′, 2, ‘isabel_vr@hotmail.com’);

INSERT INTO `empleados` VALUES (2, ‘Olga’, ‘tucuman 565′, 28, ‘olgars_2@hotmail.com’);

INSERT INTO `empleados` VALUES (3, ‘Kathy’, ‘tucuman 565′, 7, ‘kathya@hotmail.com’);

INSERT INTO `empleados` VALUES (4, ‘Gilmer’, ‘tucuman 565′, 30, ‘gilmerv@gmail.com’);

– ——————————————————–

creamos el store procedure PRO_LEE_EMPLEADOS()

DELIMITER $$

DROP PROCEDURE IF EXISTS `ejemplo`.`PRO_LEE_EMPLEADOS`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `PRO_LEE_EMPLEADOS`()
BEGIN
    select * from empleados;
    END$$

DELIMITER ;

3. creamos la clase para la conexión (class BaseDatos):cls_conexionDB.php

<?php

include(‘adodb/adodb.inc.php’);
class BaseDatos
{
var $row;

var $conn;
var $dbdriver;
var $servidor;
var $usuario;
var $contraseña;
var $database;
var $DB;

function baseDatos(){
$this->dbdriver=’mysql’;

$this->servidor = “localhost”;
$this->usuario = “root”;
$this->pass = “”;
$this->database= “ejemplo”;
$this->conn = $this->conectar()

;

}

function conectar(){

$dsn = “$this->dbdriver://$this->usuario:$this->pass@$this->servidor/$this->database?clientflags=65536″;
$this->DB = NewADOConnection($dsn);
if ( !$this->DB ) die(“No se establecio la conexion – $dsn”);

$this->DB->SetFetchMode(ADODB_FETCH_ASSOC);
return $this->DB;

}
function consulta($sql1)
{

$rs = $this->conn->Execute($sql1);/*ejecutamos el query*/

return $rs;

}

function Execute($query=’select now()’){
$this->row = $this->DB->Execute($query) or die ($this->DB->ErrorMsg());
}
function FetchAll($query){

$this->Execute($query);
while(!$this->row->EOF){
$temp[] = $this->row->fields;
$this->row->MoveNext();

$this->bbdd_desc();

}
return $temp;
}

function resultado($rs)
{
if ($rs)
while ($row = $rs->GetRows()) /*armamos el arreglo con los datos obtenidos de la consulta*/
{
return $row;
}
}

function numeroFilas($rs)
{
$cant = $rs->RecordCount();
return $cant;
}

function numeroColumnas

($rs)
{

$nuncolum=$rs->FieldCount();
return $nuncolum;
}

function nombreCampo($table)
{

return $this->conn->MetaColumnNames($table);
}

public function bbdd_desc()
{
return $this->DB->Close();

}

}

?>

4. por último creamos el script para probar nuestra clase test_conexionDB.php

<?
include ‘cls_conexionDB.php’; //importo la clase
$b = new BaseDato

s();

$sql1 = ‘SELECT * FR

OM empleados’;
echo $sql1;

$r = $b->consulta($sql1);

$canti= $b->nu

meroFilas($r);
$result= $b->resultado($r);
$tabla=’empleados’;
$nombrecampos= $b->nombreCampo($tabla);

$cantcol=$b->numeroColumnas($r);
echo “<p><b>RESUL

TADO ANTES DE USAR STORE PROCEDURE<b></P>”;
echo “<table border=0 cellspacing=2 cellpadding=2 style=’border:1px solid red; background-color:transparent’>”;
echo “<tr style=’color:#B5360B’ >”;
foreach ($nombreca

mpos as $valor){
print “<td><b>”. strtoupper($valor) . “</b></td>”;
}

echo “</tr>”;
foreach ($result as $valor){
echo “<tr>”;
print “<td>”. $valo

r['id_empleado'] . “</td>”;
print “<td>”. $valor['nombre'] . “</td>”;
print “<td>”. $valor['direccion'] . “</td>”;
print “<td>”. $valor['edad'] . “</td>”;
print “<td>”. $

valor['email'] . “</td>”;
echo “</tr>”;

}
echo “</table><br>”;

$SQL=”CALL PRO_LEE_EMPLEADOS()”;

echo $SQL;

$rs=$b->FetchAll($SQL);

echo “<p><b>RESULTADO USANDO STORE PROCEDURE</b></P>”;

echo “<table border=

0 cellspacing=2 cellpadding=2 style=’border:1px solid blue; background-color:transparent’><br>”;
?>
<tr align=”center” style=’color:blue’>
<td><b>ID EMPLEADO</b></td>
<td><b>NOMBRE <

/b></td>
<td><b>DIRECCION </b></td>
<td ><b>EDAD </b></td>
<td><b>EMAIL </b

></td>
</tr>
<?
foreach ($rs as $valor_sp){
echo “<tr >”;

print “<td>”.$valor_sp['id_empleado'] . “</td>”;
print “<td>”. $valor_sp['nombre'] . “</td>”;
print “<td>”. $valor

_sp['direccion'] . “</td>”;
print “<td>”. $valor_sp['edad'] . “</td>”;
print “<td>”. $valor_sp['email'] . “</td>”;

echo “</tr>”;

}

echo “</table>”;

echo “MAS CONSULTAS”

$consultaAdd1 = new BaseDatos();

$SQL=”CALL PRO_LEE_EMPLEADOS()”;
$rs1=$consultaAdd1->FetchAll($SQL);

echo “<pre>”;
print_r($rs1);
echo “<pre><br/>”;

$consultaAdd2 = new BaseDatos();

$SQL=”CALL PRO_LEE_EMPLEADOS()”;
$rs2=$consultaAdd2->FetchAll($SQL);

echo “<pre>”;
print_r($rs2);
echo “<pre><br/>”;

?>

capturas de pantalla ;

tabla_empleados2.pngllamada-a-sp.pngresultado.png

Comentarios (7) »

¡Hola, mundo!

Mi primer post en wordpress

Comentarios (1) »