You are on page 1of 4

Nota: Este documento pretende presentar exclusivamente los aspectos relativos a la

conexion entre PHP y Oracle.



Entorno de Trabajo:
El servidor en el cual se trabajara sera Arcadia (152.74.52.3). Para ello pueden
conectarse por SSH y FTP con los nombres de usuario y contrasea que se daran en
clase.

Este servidor cuenta con servidor apache 1.3 y Php 4.4 con el set de Iunciones OCI
activados.

Pueden ver sus archivos Php por la direccion http://arcadia.inI.udec.cl/usergrupo
en donde el usuario del grupo es el que se dara en clases.

Conectandose a Oracle:

ocilogon( string nombreusuario, string contrasea|, string bd | )

Esta Iuncion crea una conexion con la base de datos. Devuelve true si se conecta y Ialse
en caso contrario.
Una variante es ociplogon( string nombreusuario, string contrasenya |, string bd |) que
crea una conexion permanente.

Ejemplo:
En este ejemplo se intenta realizar una conexion con la base de datos, de ser asi se
escribe 'Conectado por pantalla, en caso contrario se escribe 'Error en la conexion







Notar la cadena //arcadia.inI.udec.cl:1522/mazanga esa es la manera correcta de
indicar la BD y su instancia correspondiente.

Desconectandose de Oracle

ocilogoff (int identiIicador)

Donde identiIicador es el valor (opcional) que retornan las Iunciones de conexion.

Ejemplo:
En este ejemplo nos conectamos y luego desconectamos de oracle con la Iuncion
ocilogoII:





Realizando Consultas en Oracle
?
iI(ociplogon('usuario','pass','//arcadia.inI.udec.cl:1522/mazanga')) echo
"Conectado!";} else echo "Error en la conexion;}
?~
?
iI($identiIicador ociplogon('usuario','pass','//arcadia.inI.udec.cl:1522/mazanga'))
echo "Conectado!";} else echo "Error en la conexion;}
ocilogoII($identiIicador);
?~
El proceso de realizar consultas se divide en 2 partes:
1. Crear la consulta y veriIicar que este sintacticamente correcta.
2. Ejecutar la consulta.

Para crear la consulta, generalmente creamos una variable que la contenga y luego
aplicamos sobre esa variable el comando OciParse.

OciParse(int identiIicadorconexion, string consulta)
El identiIicador de la conexion es opcional, esta Iuncion retorna el identiIicador de la
query si la consulta esta correctamente Iormulada y False en caso contrario.

Para ejecutar la consulta se usa la Iuncion OciExecute(int idconsulta, int modo) en
donde 'modo puede ser:

1. OCICOMMITONSUCCESS: para que los cambios se guarden
automaticamente.
2. OCIDEFAULT: para que sea necesario aplicar un OciCommit para conIirmar
las consultas hechas.

Ejemplo:






















Seguimiento:
Lo primero que se hace es intentar crear una conexion con la BD, el identiIicador de la
conexion se guardara en $conexion.
Luego se guarda la consulta en la variable $consulta, lo que se intentara hacer es
actualizar la matricula de un alumno.
Notese el uso de la Iuncion OCIError, esta Iuncion captura el error en caso de que exista
y lo despliega por pantalla.
Si no hay error, entonces se ejecutara el comando, con el modo COMMIT activado por
lo que no es necesario hacer un commit nuevamente.
?
$conexion OciLogon("usuario", "password","//arcadia.inI.udec.cl:1522/mazanga");
iI ($conexion)

echo "Conectados!";
}
else

echo "Error al conectar";
}
$consulta "update alumno set matricula '123' where matricula '221'";
$idconsulta ociparse($conexion,$consulta);
iI (!$idconsulta)

$error OCIError($idconsulta); echo "Error: ".$error|"message"|; exit;
}
else
$resultado OciExecute($idconsulta,OCICOMMITONSUCCESS);
}
?~
Realizando Consultas (y mostrando resultados por pantalla)

Como muchas de las consultas que se hacen a la BD entregan tuplas que deseamos ver,
necesitamos conocer algun mecanismo para mostrarlas por pantalla.
Para esto usamos OCIFetchStatement(int idconsulta, array resultados)

Esta Iuncion toma el arreglo que resulta de realizar un select y guarda los datos en la
variable resultados. Esta variable contiene los encabezados de cada columna y los
valores que hay en estas; con un ejemplo quedara mas claro:










































?
/* OCIFetchStatement example mbrittonverinet.com (990624) */

$conn OCILogon("scott","tiger");

$stmt OCIParse($conn,"select * Irom emp");

OCIExecute($stmt);

$nrows OCIFetchStatement($stmt,$results);
iI ( $nrows ~ 0 )
print "TABLE BORDER\"1\"~\n";
print "TR~\n";
while ( list( $key, $val ) each( $results ) )
print "TH~$key/TH~\n";
}
print "/TR~\n";

Ior ( $i 0; $i $nrows; $i )
reset($results);
print "TR~\n";
while ( $column each($results) )
$data $column|'value'|;
print "TD~$data|$i|/TD~\n";
}
print "/TR~\n";
}
print "/TABLE~\n";
} else
echo "No data IoundBR~\n";
}
print "$nrows Records SelectedBR~\n";

OCIFreeStatement($stmt);
OCILogoII($conn);

?~

Seguimiento:
Lo que se hace en este ejemplo es crear una conexion a una base de datos cualquiera y
luego realizar un select sobre la tabla EMP.
Como se puede apreciar, una alternativa para el comando echo es el comando print.
Luego de hacer la consulta se crea el encabezado de una tabla en html y luego mientras
haya datos de encabezado en el arreglo (eso se ve con el while ( list( $key, $val )
each( $results )) se escribiran los titulos de las columnas.

Despues, lo que se hace es escribir el contenido de esas columnas o sea los valores que
entrega el select y esto se hace mientras haya datos que colocar.

Finalmente se escribe la cantidad de tuplas que entrega la tabla, con la variable que
retorna la Iuncion OCIFetchStatement.


Bibliografa:

1. Manual de Php http://cl2.php.net/manual/es/reI.oci8.php


Cristian Orellana Castillo.
25

You might also like