PDA

Ver la Versión Completa : Ejecutar SP desde php


micayael
22-12-2005, 20:44:40
Hola gente.

TEngo en firebird un SP que hace un insert a una tabla y desde php tengo un script que llama a ese SP con sus respectivos parametros de entrada.

Si lo hago asi:
$conexion->ejecutar("INSERT INTO LIBROS_T VALUES('$lib_nombre', '$lib_editorial', '$lib_autor', 1, '$lib_resumen')");

perfectamente funciona y el registro es insertado, pero si lo hago asi:
$conexion->ejecutar("SELECT LIB_ID FROM SP_LIB_A ('$lib_nombre', '$lib_editorial', '$lib_autor', 1, '$lib_resumen')");

aunque me responde que lo inserto porque existe un resource, cuando miro la base de datos no inserta nada.

Alguien sabe que le pasa a esto???

maeyanes
22-12-2005, 21:27:50
Ya trataste llamando al procedimiento como tal?


$conexion->ejecutar("EXECUTE PROCEDURE SP_LIB_A
('$lib_nombre', '$lib_editorial', '$lib_autor', 1, '$lib_resumen')");




Saludos...

micayael
23-12-2005, 15:53:49
Lo que pasa es que el procedimiento devuelve valores y no logro hacer que funcione con returning values.

maeyanes
23-12-2005, 16:19:13
El método ejecutar que estas usando, es programado por ti?

Como está escrito internamente? Que funciones de PHP usa?



Saludos...

micayael
23-12-2005, 18:44:09
Utiliza un @ibase_query($this->bdd_conexion_id, $sSQL)

solo la funcion ibase_query();

maeyanes
23-12-2005, 20:28:24
Hice una búsqueda en Google y encontré esto:


$sql = "SELECT * FROM SP_MY_PROCEDURE()";

$pstm = ibase_prepare($connection, $sql);
$rs = ibase_execute($pstm);

while ($row = ibase_fetch_row($rs));
// ...
}

ibase_free_result($pstm);


Nota que se está usando la función ibase_execute();


Tal vez con eso resuelvas tu problema...



Saludos...

micayael
26-12-2005, 11:46:54
Ok gracias maeyanes.

Está solucionado.

Lo que pasaba es que usando un SELECT * FROM PROCEDURE lo tengo que usar con una funcion que hice para hacer consultas. Usando ejecutar() seria para ejecutar sentencias directas como por ejemplo un INSERT.

Gracias