Hola quisiera saber alguna forma de lograr conectar esta base de datos con php para poder realizar consulta de registros desde internet.
Se usar php con mysql pero no tengo idea como conectar oracle a php agradecería cualquier ayuda
| |||
Conexion de php con Oracle Hola quisiera saber alguna forma de lograr conectar esta base de datos con php para poder realizar consulta de registros desde internet. Se usar php con mysql pero no tengo idea como conectar oracle a php agradecería cualquier ayuda |
| ||||
__________________ Nadie roba nada ya que en la vida todo se paga . . . Exentrit - Soluciones SharePoint & Net |
| ||||
Hola; Creo que es bueno aprender mediante ejemplos, así que aquí debajo te pongo un par de ellos comentados: Un saludo
Código:
<?php /* Conexion a Base de Datos Oracle y ejecución de un procedimiento almacenado que hace un Select, los datos se presentan en una tabla (los nulos se sustituyen por casillas vacias). */ // suppose your stored procedure ENTIDADES.LISTA_SERVIDORES returns a ref cursor in :data print "<HTML><BODY>"; $db = "metro.dominio.es"; $conn = OCINLogon("mb","mb",$db); $curs = OCINewCursor($conn); $stmt = OCIParse($conn,"begin :data:=GET_ENTIDADES.LISTA_LINEAS();end;"); ocibindbyname($stmt,"data",&$curs,-1,OCI_B_CURSOR); ociexecute($stmt); ociexecute($curs); $flag=true; print "<TABLE BORDER=\"1\">"; //el resultset esta en data que es un conjunto de arrays asociativos //en el que tambien se devuelven los NULLS al pasarle el parametro OCI_ASSOC+OCI_RETURN_NULLS while (OCIFetchInto($curs,&$data,OCI_ASSOC+OCI_RETURN_NULLS)) { //var_dump($data); Esto da como resultado la presentación del array en pantalla $vector = array_keys($data); //encabezados de la tabla (solo se hace la primera vez que entro en el bucle) print "<TR>"; if ($flag) { $ncols = count($vector); for ( $i = 0; $i <= $ncols-1; $i++ ) { $column_name = $vector[$i]; print "<TD><B>". $column_name ."</B></TD>"; } print "</TR>"; $flag=false; } //esto lo hago para cada uno de los arrays print "<TR>"; for ( $i = 0; $i <= $ncols-1; $i++ ) { $clave = $vector[$i]; if ($data[$clave]==NULL){ $column_value = " "; }else{ $column_value = $data[$clave]; } print "<TD>". $column_value ."</TD>"; } print "</TR>"; } print "</TABLE>"; print "</BODY></HTML>"; OCIFreeCursor($stmt); OCIFreeStatement($curs); OCILogoff($conn); ?>
Código:
<?php /* Conexion a Base de Datos Oracle y ejecución de un procedimiento almacenado que hace un Insert, el procedimiento devuelve un valor autonumerico con el ID del nuevo Servidor insertado. */ // suppose your stored procedure info.output returns a ref cursor in :data print "<HTML><BODY>"; $db = "metro.dominio.es"; $conn = OCINLogon("metro","metro",$db); $stmt = OCIParse($conn,"begin :data:=GESTION_SERVIDORES.INSERTAR_SERVIDOR('999','888','888','888','888','888');end;"); $retorno = OCINewDescriptor($conn); ocibindbyname($stmt,":data",&$retorno,10); ociexecute($stmt); print "VALOR RETORNADO POR LA FUNCION GESTION_SERVIDORES.INSERTAR_SERVIDOR " . $retorno; OCIFreeStatement($stmt); OCILogoff($conn); ?>
__________________ ¿Por qué Uri Geller doblaba cucharas? |
| |||
Ayuda sobre el tema tratado. Estoy intentando lanzar un procedimiento almacenado de Oracle desde PHP, donde tengo tanto valores de entrada como valores de salida. He visto algunos ejemplos y estoy algo desorientado. Utilizo OCI e OCIBindByName para el paso de los datos. Mi pregunta es como distinguir los datos que son de entrada con los que son de salida. En el ejemplo siguiente teneis dos lineas, una con variable '$' y otra con '&$'. Quiere decir esto que una es de entrada y otra de salida. Unos ejemplos los encuentro con solo '$, otros con '&$', así que no me aclaro. OCIBindByName($sth,":icurso",$curso); OCIBindByName($sth,":nombr",&$w_nombre); ¿ Teneis por ahí algún ejemplo con el que me podais ilustrar ? No consigo recuperar nada, tan solo me aparece un error de Oracle cuando OCIExecute intenta lanzar la consulta. Este error es el siguiente: 6502 ORA-06502: PL/SQL: error : buffer de cadenas de caracteres demasiado pequeño numérico o de valor ORA-06512: en "CMPOWN.E03", línea 47 ORA-06512: en línea 1 ¿ tengo que declarar las variables previamente ? ¿ debe de indicarle el tipo de alguna forma ? Gracias de antemano. Última edición por jcheca; 18/10/2003 a las 01:04 |