6
Conexión de php con pl/sql En estos ejemplos se realiza la conexión con el usuario  HR, que es el esquema de ejemplo "Human Resources" proporcionado con la base de datos Oracle. Podría ser necesario desbloquear la cuenta y reiniciar la contrasea antes de poder usarla. !os ejemplos se conectan a la base de datos  XE  de su mquina. #ambie la cadena de conexión a su base de datos antes de ejecutar los ejemplos. Ejemplo #1 Consulta básica Este ejemplo muestra la realización de consultas y la $isualización de resultados. !as sentencias en O#%& usan la secuencia de pasos 'preparación(ejecución(obtención'. <?php $conexión = oci_connect('hr', 'welcome', 'localhost/XE' ); if ($conexión) !  $e = oci_error();  tri""er_error (htmlentities ($e#'messa"e', E%&_&E*), E_*E+_E+++ ); // -reparar la sentencia $sti. = oci_parse($conexión, '*EE0& 1 2+3 .epartments' ); if ($sti.) !  $e = oci_error($conexión);  tri""er_error (htmlentities ($e#'messa"e', E%&_&E*), E_*E+_E+++ ); // +eali4ar la ló"ica .e la cons5lta $r = oci_exec5te ($sti.); if ($r) !  $e = oci_error($sti.);  tri""er_error (htmlentities ($e#'messa"e', E%&_&E*), E_*E+_E+++ ); // 6tener los res5lta.os .e la cons5lta print 7<ta6le 6or.er='8'9:n7 ; while ($fila = oci_fetch_arra ($sti., 0_**0>0_+E&+%_%* )) !  print 7<tr9:n7;  foreach ($fila as $elemento) !  print 7 <t.97 ($elemento == n5ll ? htmlentities ($elemento, E%&_&E*) @ 77) 7</t.9:n7;    print 7</tr9:n7; print 7</ta6le9:n7; oci_free_statement ($sti.); oci_close($conexión); ?9 

Conexión de php con plsql.doc

Embed Size (px)

Citation preview

7/21/2019 Conexión de php con plsql.doc

http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 1/6

Conexión de php con pl/sql

En estos ejemplos se realiza la conexión con el usuario HR, que es el esquema de ejemplo"Human Resources" proporcionado con la base de datos Oracle. Podría ser necesario

desbloquear la cuenta y reiniciar la contrasea antes de poder usarla.

!os ejemplos se conectan a la base de datos XE  de su mquina. #ambie la cadena de

conexión a su base de datos antes de ejecutar los ejemplos.

Ejemplo #1 Consulta básica

Este ejemplo muestra la realización de consultas y la $isualización de resultados. !as

sentencias en O#%& usan la secuencia de pasos 'preparación(ejecución(obtención'.

<?php

$conexión = oci_connect('hr', 'welcome', 'localhost/XE');if ($conexión) !  $e = oci_error();  tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);

// -reparar la sentencia$sti. = oci_parse($conexión, '*EE0& 1 2+3 .epartments');if ($sti.) !  $e = oci_error($conexión);  tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);

// +eali4ar la ló"ica .e la cons5lta

$r = oci_exec5te($sti.);if ($r) !  $e = oci_error($sti.);  tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);

// 6tener los res5lta.os .e la cons5ltaprint 7<ta6le 6or.er='8'9:n7;while ($fila = oci_fetch_arra($sti., 0_**0>0_+E&+%_%*)) !  print 7<tr9:n7;  foreach ($fila as $elemento) !  print 7 <t.97 ($elemento == n5ll ? htmlentities($elemento,E%&_&E*) @ 77) 7</t.9:n7;

    print 7</tr9:n7;print 7</ta6le9:n7;

oci_free_statement($sti.);oci_close($conexión);

?9 

7/21/2019 Conexión de php con plsql.doc

http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 2/6

Ejemplo #2 Inserción con variables vinculadas

!as $ariables $inculadas mejoran el rendimiento permitiendo la reutilización de contextos

ejecutados y cac)*s. !as $ariables $inculadas mejoran la se+uridad pre$iniendo al+unostipos de problemas de %nyecciones -!.

<?php

// ntes .e eAec5tarlo, cree la ta6la@// 0+E&E &BE 3C&BE (mi. %3BE+, m. D+0+F(FG));

$conexión = oci_connect('hr', 'welcome', 'localhost/XE');if ($conexión) !  $e = oci_error();  tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);

$sti. = oci_parse($conexión, '%*E+& %& 3C&BE (mi., m.) DE*(@mi., @m.ata)');

$i. = HG;$.atos = 'l"5nos .atos';

oci_6in._6_name($sti., '@mi.', $i.);oci_6in._6_name($sti., '@m.ata', $.atos);

$r = oci_exec5te($sti.); // eAec5ta consi"na

if ($r) !  print 7na fila inserta.a7;

oci_free_statement($sti.);oci_close($conexión);

?9 

Ejemplo #3 incular la cláusula !"EE a una consulta

!o si+uiente muestra una $inculación escalar nica.

<?php

$conn = oci_connect(7hr7, 7hrpw.7, 7localhost/XE7);if ($conn) !  $m = oci_error();  tri""er_error(htmlentities($m#'messa"e'), E_*E+_E+++);

$sIl = '*EE0& last_name 2+3 emploees JE+E .epartment_i. = @.i.6K +LE+ BC last_name';$sti. = oci_parse($conn, $sIl);$.i.6K = HG;oci_6in._6_name($sti., '@.i.6K', $.i.6K);

7/21/2019 Conexión de php con plsql.doc

http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 3/6

oci_exec5te($sti.);while (($row = oci_fetch_arra($sti., 0_**0)) = false) !  echo $row#'*&_%3E' 7<6r9:n7;

// a sali.a es// 5stin

// Ernst// 5nol.// orent4// -ata6alla

oci_free_statement($sti.);oci_close($conn);

?9 

Ejemplo #$ Insertar datos en una columna C%&'

Para datos +randes use los tipos objeto +rande binario /0!O01 u objeto +rande decaracteres /#!O01. Este ejemplo usa #!O0.

<?php

// ntes .e eAec5tarlo, cree la ta6la@// 0+E&E &BE 3C&BE (mMe %3BE+, mclo6 0B);

$conexión = oci_connect('hr', 'welcome', 'localhost/XE');if ($conexión) !  $e = oci_error();  tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);

$mMe = 8FNON; // claKe ar6itraria para este eAemplo;

$sIl = 7%*E+& %& mta6le (mMe, mclo6)  DE* (@mMe, E3-&C_0B())  +E&+%%P mclo6 %& @mclo67;

$sti. = oci_parse($conexión, $sIl);$clo6 = oci_new_.escriptor($conexión, 0_L_B);oci_6in._6_name($sti., 7@mMe7, $mMe, Q);oci_6in._6_name($sti., 7@mclo67, $clo6, R8, 0_B_0B);oci_exec5te($sti., 0_%_&_033&); // 5tilice 0_LE2& para -- <= QN8$clo6R9saKe(7na ca.ena m5 "ran.e7);

oci_commit($conexión);

// 6tener los .atos 0B

$cons5lta = '*EE0& mclo6 2+3 mta6le JE+E mMe = @mMe';

$sti. = oci_parse ($conexión, $cons5lta);oci_6in._6_name($sti., 7@mMe7, $mMe, Q);

7/21/2019 Conexión de php con plsql.doc

http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 4/6

oci_exec5te($sti.);

print '<ta6le 6or.er=7879';while ($row = oci_fetch_arra($sti., 0_**0>0_+E&+%_B*)) !  print '<tr9<t.9'$row#'3C0B''</t.9</tr9';  // En 5n 65cle, li6erar la Karia6le "ran.e antes .e la FS o6tención re.5ce el 5so .e memoria .e picos .e --

  5nset($row);print '</ta6le9';

?9 

Ejemplo #( )sar una *unción almacenada de +%/,-%

e debe $incular una $ariable para el $alor de retorno y, opcionalmente, para cualquier

ar+umento de la 2unción de P!3-!.

<?php

/1  ntes .e eAec5tar el pro"rama .e --, cree 5na f5nción almacena.a en  *1-l5s o * LeKeloper@

  0+E&E + +E-0E 2%0&% mf5nc(p % %3BE+) +E&+% %3BE+ *  BEP%  +E&+% p 1 N;  E%L;

1/

$conexión = oci_connect('hr', 'welcome', 'localhost/XE');

if ($conexión) !  $e = oci_error();  tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);

$p = T;

$sti. = oci_parse($conexión, '6e"in @r @= mf5nc(@p); en.;');oci_6in._6_name($sti., '@p', $p);oci_6in._6_name($sti., '@r', $r, OG);

oci_exec5te($sti.);

print 7$r:n7; // imprime FO

oci_free_statement($sti.);oci_close($conexión);

?9 

Ejemplo #. )tiliar un procedimiento almacenado de +%/,-%

7/21/2019 Conexión de php con plsql.doc

http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 5/6

#on los procedimientos almacenados se deberían $incular $ariables para cualquier

ar+umento.

<?php

/1

  ntes .e eAec5tar el pro"rama .e --, cree 5n proce.imiento almacena.oen  *1-l5s or * LeKeloper@

  0+E&E + +E-0E -+0EL+E mproc(p8 % %3BE+, pF & %3BE+) *  BEP%  pF @= p8 1 F;  E%L;

1/

$conexión = oci_connect('hr', 'welcome', 'localhost/XE');if ($conexión) !  $e = oci_error();  tri""er_error(htmlentities($e#'messa"e', E%&_&E*), E_*E+_E+++);

$p8 = T;

$sti. = oci_parse($conexión, '6e"in mproc(@p8, @pF); en.;');oci_6in._6_name($sti., '@p8', $p8);oci_6in._6_name($sti., '@pF', $pF, OG);

oci_exec5te($sti.);

print 7$pF:n7; // imprime 8H

oci_free_statement($sti.);oci_close($conexión);

?9 

Ejemplo #0 %lamar a una *unción de +%/,-% que devuelve un REF CURSOR

#ada $alor de$uelto por la consulta es un REF CURSOR desde el que se pueden obtener

datos.

<?php/1

  0ree 5na f5nción almacena.a .e -/* como@

  0+E&E + +E-0E 2%0&% mf5nc(p8 % %3BE+) +E&+% *C*_+E20+*+ *  rc *C*_+E20+*+;  BEP%  -E% rc 2+ *EE0& cit 2+3 locations JE+E +J%3 < p8;  +E&+% rc;  E%L;1/

7/21/2019 Conexión de php con plsql.doc

http://slidepdf.com/reader/full/conexion-de-php-con-plsqldoc 6/6

$conexión = oci_connect('hr', 'welcome', 'localhost/XE');

$sti. = oci_parse($conexión, '*EE0& mf5nc(Q) * mfrc 2+3 .5al');oci_exec5te($sti.);

echo 7<ta6le 6or.er='8'9:n7;while (($fila = oci_fetch_arra($sti., 0_**0))) !

  echo 7<tr9:n7;  $rc = $fila#'32+0';  oci_exec5te($rc); // el Kalor .e la col5mna .eK5elta por la cons5ltaes 5n ref c5rsor  while (($fila_rc = oci_fetch_arra($rc, 0_**0))) !

echo 7 <t.97 $fila_rc#'0&C' 7</t.9:n7;    oci_free_statement($rc);  echo 7</tr9:n7;echo 7</ta6le9:n7;

// a sali.a es@

// BeiAin"// Bern// Bom6a// PeneKa

oci_free_statement($sti.);oci_close($conexión);

?9