Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Conexion de php con Oracle

Estas en el tema de Conexion de php con Oracle en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 10/09/2003, 13:59
 
Fecha de Ingreso: septiembre-2003
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 3
Exclamación 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
  #2 (permalink)  
Antiguo 10/09/2003, 15:56
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
visita éste link

Espero te sirva
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 10/09/2003, 17:29
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
<?php
$conn = Ora_Logon("usuario@base_de_datos", "contraseña");
?>

__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #4 (permalink)  
Antiguo 10/09/2003, 21:47
 
Fecha de Ingreso: septiembre-2003
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 3
Gracias ya le entendí, pero quisiera saber si el manejo de las tablas sea hace igual como si se trabajara con mysql
  #5 (permalink)  
Antiguo 11/09/2003, 16:46
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
Es practicamente lo mismo, pero es mejor que llames procedimientos de la base de datos a realizar querys desde php
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #6 (permalink)  
Antiguo 12/09/2003, 01:52
Avatar de txarly  
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 455
Antigüedad: 21 años, 1 mes
Puntos: 2
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 = "&nbsp;";
		}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?
  #7 (permalink)  
Antiguo 17/10/2003, 14:58
 
Fecha de Ingreso: octubre-2003
Ubicación: Córdoba
Mensajes: 2
Antigüedad: 20 años, 6 meses
Puntos: 0
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:05.