acceso a bases de datos oracle con php n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
ACCESO A BASES DE DATOS ORACLE CON PHP PowerPoint Presentation
Download Presentation
ACCESO A BASES DE DATOS ORACLE CON PHP

Loading in 2 Seconds...

play fullscreen
1 / 21

ACCESO A BASES DE DATOS ORACLE CON PHP - PowerPoint PPT Presentation


  • 126 Views
  • Uploaded on

ACCESO A BASES DE DATOS ORACLE CON PHP. MANUEL BUTRÓN BLANES. Índice. Introducción Qué necesito… Funciones básicas Introducción a las bind variables Otras funciones. Introducción. Mejor dupla bajo web: oracle+php. Muchos tipos de funciones. Diferentes para cada SGDB.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'ACCESO A BASES DE DATOS ORACLE CON PHP' - janet


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
ndice
Índice
  • Introducción
  • Qué necesito…
  • Funciones básicas
  • Introducción a las bind variables
  • Otras funciones.
introducci n
Introducción
  • Mejor dupla bajo web: oracle+php.
  • Muchos tipos de funciones.
  • Diferentes para cada SGDB.
  • El codigo no es portable.
  • Uso de bind variables.
qu necesito
Qué necesito…
  • Gestor de bases de datos oracle.
  • Apache o IIS.
  • Php 5.0 para las funciones actuales.
  • Editor highlight.
operaciones b sicas
Operaciones básicas
  • Conectarse a la base de datos.
  • Preparar una sentencia para su ejecución.
  • Ejecutarla.
  • Cerrar la conexión.
slide6
Establecer una conexión con la BD

oci_connect ( string username, string password [, string db [, string charset [, int session_mode]]] )

<?php  $conn = oci_connect(‘user', ‘pass', 'orcl');

  if (!$conn) {   $e = oci_error();

   print htmlentities($e['message']);   exit;  }

?>

  • Devuelve un identificador que se usa en todas las funciones o falso en el caso de que la conexión falle.
slide7
Cerrar una conexión con la base de datos

bool oci_close ( resource connection )

<?php  $conn = oci_connect(‘user', ‘pass', 'orcl');  if (!$conn) {   $e = oci_error();   print htmlentities($e['message']);   exit;  }oci_close($conn)

?>

  • Devuelve true si se cierra y false si no.
slide8
Preparar una sentencia oracle para su ejecución.

oci_parse(resource connection, string query)

Prepara la query usando el identificador que devuelve oci_connect y devuelve un sentecia identificadora, que puede ser usada con oci_bind_by name() o oci_execute principalmente pero tambien con otras funciones.

<?php

$query = 'SELECT * FROM DEPARTMENTS';  $stid = oci_parse($conn, $query);  if (!$stid) {   $e = oci_error($conn);   print htmlentities($e['message']);   exit;

?>

Nota: Esta funcion no valida la query. La unica manera de validar si la query es una sentencia correcta de SQL es ejecutandola

Devuelve falso o error.

slide9
Ejecutar una sentecia

bool oci_execute (resource stmt , [int mode])

<?php

$query = 'SELECT * FROM DEPARTMENTS';  $stid = oci_parse($conn, $query);  if (!$stid) {   $e = oci_error($conn);   print htmlentities($e['message']);   exit;

?>

$r = oci_execute($stid, OCI_DEFAULT);  if (!$r) {   $e = oci_error($stid);   echo htmlentities($e['message']);   exit;

  • Ejecuta una sentecia SQL previamente comprobada con oci_parse
  • Devuelve un resultado dependiendo del tipo de query o false en caso de error.
slide10
<?php  $conn = oci_connect(‘user', ‘pass', 'orcl');  if (!$conn) {   $e = oci_error();   print htmlentities($e['message']);   exit;  }  $query = 'SELECT * FROM DEPARTMENTS';  $stid = oci_parse($conn, $query);  if (!$stid) {   $e = oci_error($conn);   print htmlentities($e['message']);   exit;  }  $r = oci_execute($stid, OCI_DEFAULT);  if (!$r) {   $e = oci_error($stid);   echo htmlentities($e['message']);   exit;  }  print '<table border="1">';  while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {   print '<tr>';       foreach ($row as $item) {         print '<td>'.($item?htmlentities($item):'&nbsp;').'</td>';       }       print '</tr>';  }  print '</table>';  oci_close($conn);

?>

introducci n a las bind variables
Introducción a las bind variables
  • Ligar variables en un enunciado SQL.
  • Ventaja sobre MySQL o ACCESS que no manejan bind nativamente.
  • Pre-compilacion de enunciados SQL.
  • Optimización. Aumento importante de velocidad al insertar.
  • SQL inalterable.
  • Medida de seguridad ante el SQL injection.
introducci n a las bind variables ii
Introducción a las bind variables II
  • Sintaxis-> :bindVariable
  • oci_bind_by_name

bool oci_bind_by_name ( resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] )

ejemplo web insegura sql injection
Ejemplo web insegura. SQL injection.
  • Ejecutar sentecias SQL mediante la aplicación sin la debida autentificación.
  • Login.asp; user:Obelix, pass: Dogmatix

SELECT * FROM Users WHERE username= 'Obelix' and password='Dogmatix'

  • Nombre de Usuario: ‘ or 1=1—
  • SELECT * FROM Users WHERE username='' or 1=1-- and password='‘
  • SELECT * FROM Users WHERE username='' or 1=1
ejemplo seguridad con bind variables
Ejemplo seguridad con bind variables

$SQL = "SELECT * FROM TECNICOS WHERE USUARIO = :USUARIO AND CLAVE = :CLAVE";

$Sentencia =oci_parse ($Conexion, $SQL);

oci_bind_by_name ($Sentencia,”:USUARIO", $USUARIO, -1);

oci_bind_by_name ($Sentencia, “:CLAVE", $CLAVE, -1);

oci_execute ($Sentencia);

insertar con bind variables
Insertar con bind variables

<?php  // Before running, create the table:  //  CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));  $conn = oci_connect(‘user', ‘pass', 'orcl');  $query = 'INSERT INTO MYTABLE VALUES(:myid, :mydata)';  $stid = oci_parse($conn, $query);  $id = 60;  $data = 'Some data';  oci_bind_by_name($stid, ':myid', $id);  oci_bind_by_name($stid, ':mydata', $data);  $r = oci_execute($stid);  if ($r)   print "One row inserted";  oci_close($conn);?>

funciones auxiliares
array oci_fetch_array ( resource statement [, int mode] )

devuelve un array asociativo o numerico o ambos, con el resultado, false en caso de error

oci_both

oci_assoc

oci_num

oci_return_nulls

oci_return_lobs

<?php$conexion = oci_connect(“user", “pass");$SQL= "SELECT id, name FROM fruits";$sentencia = oci_parse ($conexion, $SQL);oci_execute ($sentencia);while ($row = oci_fetch_array ($sentencia, OCI_BOTH)) {   echo $row[0]." and ".$row['ID']." is the same<br>";   echo $row[1]." and ".$row['NAME']." is the same<br>";}?>

Funciones auxiliares
funciones auxiliares ii
Funciones auxiliares II
  • int oci_fetch_all ( resource statement, array &output [, int skip [, int maxrows [, int flags]]] )

Le pasamos el array por referencia para que lo componga y nos devuelve el numero de filas que han sido imprimidas en el array

  • oci_num_fields(sentencia), devuelve el numero de columas en la sentencia.
  • oci_num_rows(sentencia), devuelve el numero de filas en la sentencia.
otras funciones
Otras funciones
  • oci_commit, oci_roolback, para control de transacciones
  • oci_error, devuelve el ultimo error
  • oci_server_version, devuelve la version del servidor
  • oci_statement_type, devuelve el tipo de sentencia(select,insert…)
otras funciones ii
Otras funciones II
  • oci_password_change, cambia la contraseña de acceso
  • oci_field_

is null, precision,scale,size,type.

  • oci_pconnect, se conecta a oracle usando una conexión permanente.
  • oci_field_name, oci_row_name
bibliograf a
Bibliografía
  • php.net
  • Wikipedia