Foros del Web » Programando para Internet » PHP »

Procedimientos Almacenados en PHP

Estas en el tema de Procedimientos Almacenados en PHP en el foro de PHP en Foros del Web. Me hace falta acceder a un procedimiento en una BD gestada por MySQL. ¿Cómo lo hago? Si pueden me dicen como acceder de la misma ...
  #1 (permalink)  
Antiguo 01/10/2006, 00:38
 
Fecha de Ingreso: septiembre-2006
Mensajes: 5
Antigüedad: 18 años, 1 mes
Puntos: 0
De acuerdo Procedimientos Almacenados en PHP

Me hace falta acceder a un procedimiento en una BD gestada por MySQL.
¿Cómo lo hago?
Si pueden me dicen como acceder de la misma forma a SQLServer.

Gracias por adelantado
  #2 (permalink)  
Antiguo 01/10/2006, 08:00
 
Fecha de Ingreso: septiembre-2006
Mensajes: 59
Antigüedad: 18 años, 2 meses
Puntos: 0
Hola

No entiendo tu pregunta.

Que quieres?

Como hacer la conexion a SQLserver?
o la conexion a Mysql??

Un saludo
  #3 (permalink)  
Antiguo 04/10/2006, 09:36
 
Fecha de Ingreso: septiembre-2006
Mensajes: 5
Antigüedad: 18 años, 1 mes
Puntos: 0
Re-

La que me hace falta es la conexión a MySQL.
  #4 (permalink)  
Antiguo 04/10/2006, 09:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Conectarse a MySQL
  #5 (permalink)  
Antiguo 04/10/2006, 14:26
 
Fecha de Ingreso: septiembre-2006
Mensajes: 5
Antigüedad: 18 años, 1 mes
Puntos: 0
Gracias el mio, eso ya lo tengo. Lo que estoy buscando es como acceder desde php a procedimientos que están en una BD gestada por MySQl.
  #6 (permalink)  
Antiguo 04/10/2006, 14:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Usa mysql_query() para llamar al procedimiento, el formato es CALL PROCEDURE NAME, donde reemplazas PROCEDURE NAME por el nombre de tu Stored Procedure en la base de datos, si necesitas mas info ve el manual de MySQL.
  #7 (permalink)  
Antiguo 04/10/2006, 14:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Life_PHP Ver Mensaje
Gracias el mio, eso ya lo tengo. Lo que estoy buscando es como acceder desde php a procedimientos que están en una BD gestada por MySQl.
Usa el buscador del foro .. Tenemos una FAQ al respecto también .. te invito a leerlas.

En realidad un procedimiento almacenado en general y válido para casi cualquier BBDD que accedas se trata de que uses el SQL adecuado para llamar al procediminto (eso si lo desconoces primero empieza por ver un manual de SQL al respecto) y ejecutarlo con la función genérica xxxx_query(). El resultado siempre lo "procesas" con funciones clásicas xxx_fetch_array() o similares.

Para Msysql (suponemos que usas la versión adecuada de Msyql y ya tienes creado tu Procedimiento Almacenado?):

Vía PHP con la extensión mysqli (no mysql clásica)
http://www.php.net/mysqli

Aquí comentan el uso con AdoDB (una capa de abstracción de BBDD):
http://razoduke12.blogspot.com/2006/...rocedures.html

FAQ para ejecutar Procedimientos almacenados en MS SQL Server:
http://www.forosdelweb.com/showpost....&postcount=148

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 04/10/2006, 14:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por GatorV Ver Mensaje
Usa mysql_query() para llamar al procedimiento, el formato es CALL PROCEDURE NAME, donde reemplazas PROCEDURE NAME por el nombre de tu Stored Procedure en la base de datos, si necesitas mas info ve el manual de MySQL.
Con las extensioens de Msyql clásicas (cliente antigüo de Mysql) también funciona?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 04/10/2006, 16:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
A mis conocimientos si, solo que es un rollo al sacar los resultados, asi que yo la uso para querys donde decido si inserto o actualizo un registro.
  #10 (permalink)  
Antiguo 12/10/2006, 16:34
 
Fecha de Ingreso: octubre-2006
Mensajes: 1
Antigüedad: 18 años, 1 mes
Puntos: 0
Bueno aca un ejemplo tenemos la tabla Persona en una base de datos MySql llamada Prueba
----------
| PRUEBA|
----------
| Id |
-----------
| Nombres|
-----------
| Apellidos|
-----------

Cita:
Procedure sp_InsertarPersona(IN Id INTEGER,IN Nombres VARCHAR(50),INT Apellidos VARCHAR(50))
BEGIN
DECLARE a INTEGER;
INSERT INTO persona
VALUES(Id,Nombres,Apellidos);
SET a=(SELECT @@error_count);
IF a=0 THEN
COMMIT;
ELSE
ROLLBACK;
END;
END
Código PHP:
<?php 
$link 
mysql_connect('localhost''root''1234'); 
if (!
$link) { 
die(
'Not connected : ' mysql_error()); 


$db_selected mysql_select_db('test'$link); 
if (!
$db_selected) { 
die (
'No se puede utilizar la base de datos test : ' mysql_error()); 

$query='CALL sp_InsertarPersona(1,"Yoshiro Juan Víctor","Carbajal Cerín")'
$result mysql_query($query); //este es para MYSQL

//Este sirve tambien para MYSQL
/* 
$result = mysql_query('CALL sp_InsertarPersona(1,"Yoshiro Juan Víctor","Carbajal Cerín")'); 
*/ 


//Este sirve para SQL SERVER 2000
/*
$result = mysql_query('exec sp_InsertarPersona(1,"Yoshiro Juan Víctor","Carbajal Cerín")'); 
*/ 


if (!$result) { 
die(
'Invalid query: ' mysql_error()); 

?>
para utilizar un procedimiento almacenado en PHP se toma como una sentencia SQL pero de MYSQL ya que el query de SQL SERVER 2000 para utlizar procedimiento almacenado es "EXEC" y en MYSQL es "CALL" y entonces se utiliza la funcion de PHP "mysql_query()" bueno ahi tienen 2 opciones para utilizar "mysql_query()" poniendo el query en otra variable para tener mejor facilidad en realizar el codigo o sino poner la sentencia ya dentro de la funcion, ojala le sirva, bye bye.

Yoshiro Juan Víctor Carbajal Cerín
Ing. de Computacion y Sistemas

Última edición por Cluster; 12/10/2006 a las 18:37
  #11 (permalink)  
Antiguo 12/10/2006, 18:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Gracías antetodo por el ejemplo .. sólo una acotación:

Código PHP:
//Este sirve para SQL SERVER 2000 
/* 
$result = mysql_query('exec sp_InsertarPersona(1,"Yoshiro Juan Víctor","Carbajal Cerín")');  
*/ 
Deberíamos usar mssql_query() o mssql_execute() en lugar de mysql_query() .. no?. Cual sería la función adecuada? .. Según la documentación de PHP para ejecutar un "Store procedure" se debería usar "mssql_exectute()" .. aunque con la sintax SQL que indicas en el ejemplo tal vez se deba usar sólo mssql_query()

¿Podrías aclarar ese punto para redondear el tema?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 08/11/2006, 08:29
 
Fecha de Ingreso: septiembre-2006
Mensajes: 5
Antigüedad: 18 años, 1 mes
Puntos: 0
Gracias...
Con esto resuelvo.
  #13 (permalink)  
Antiguo 23/11/2006, 17:29
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 11 meses
Puntos: 19
Perdon no? pero no entendi ...

Cita:
Deberíamos usar mssql_query() o mssql_execute() en lugar de mysql_query() .. no?. Cual sería la función adecuada? .. Según la documentación de PHP para ejecutar un "Store procedure" se debería usar "mssql_exectute()" .. aunque con la sintax SQL que indicas en el ejemplo tal vez se deba usar sólo mssql_query()
mssql_execute() funciona solo con SQLServer... y efectivamente es para llamar a procedimientos almacenados, que también pueden ser llamados con la función mssql_query()

Si estoy conectado a mysql no puedo usar funciones para MSSQL

saludos!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #14 (permalink)  
Antiguo 09/11/2007, 08:26
Avatar de tricampeon27  
Fecha de Ingreso: enero-2007
Ubicación: Macul
Mensajes: 300
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Procedimientos Almacenados en PHP

quen sabe si esto funciona con un select y no isnsert+++
__________________
*****Si Hasta En La Cana X Ti Estado*****
  #15 (permalink)  
Antiguo 09/11/2007, 08:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Procedimientos Almacenados en PHP

En un procedimiento almacenado tienes tanto INSERTs como SELECTs, UPDATEs, etc. Asi que debe de servir con cualquier comando SQL valido.

Saludos.
  #16 (permalink)  
Antiguo 09/11/2007, 08:58
Avatar de tricampeon27  
Fecha de Ingreso: enero-2007
Ubicación: Macul
Mensajes: 300
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Procedimientos Almacenados en PHP

ya solucione mi problema

espero les sirva el codigo:

// mysqli way
$user = "127787";
$pass = "yessenia";
$db = "hipo";

$link = mysqli_connect("localhost",$user,$pass);
if (mysqli_connect_errno())
{
echo "connection error";
exit();
}
$conn = mysqli_select_db ($link,$db);
if (! $conn)
{
echo "error de bd";

}


//$result = mysqli_query( "CALL sp_select_usuarios(10)",$link);
$result = mysqli_query($link,'call sp_select_usuarios(10);');


if (! $result)
{
echo "error de procedure";
exit;
}
while ($aTmp = mysqli_fetch_array($result,MYSQLI_NUM))
{
// printf ("%s (%s)\n", $aTmp["usu_id"], $aTmp["usu_dv"]); con los nombre de campo no funcion si con las posiciones como la linea de abajo
printf ("{%s} (%s)\n", $roaTmpw[0], $aTmp[2]);

}
__________________
*****Si Hasta En La Cana X Ti Estado*****
  #17 (permalink)  
Antiguo 09/11/2007, 09:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Procedimientos Almacenados en PHP

Te recomendaria usar mysqli_multi_query cuando llames a procedimientos almacenados, es recomendado por el propio manual en caso de que tu procedimiento regrese multiples usuarios.

Saludos.
  #18 (permalink)  
Antiguo 28/12/2007, 17:15
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Procedimientos Almacenados en PHP

Hola amigos, Me entro la inquietud de programar en php el caso es que en Server 2000 se utilizan procedimientos almacenado a igual que en mysql algo que no savia jejeje

Pude crear un procedimiento almacenado en el que pasaba los parámetros y lo mandaba llamar en PHP código con

$myvar=mysql_query("CALL myproc('".$Par1."','".$ Par2."')",$con);

Eso me funciona
Gracias a los comentarios que aquí encontre

El problema es que no e podido mandar llamar el Procedimiento almasenado con una selecion de una tabla


SELECT * FROM `mytabla`.`mytab`;

Dentro del procedimiento

No e podido resolver el problema y se los agradeseria de antemano Gracias
Att ZaDer
  #19 (permalink)  
Antiguo 29/12/2007, 11:41
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Procedimientos Almacenados en PHP

GatorV

Gracias por tu contestacion fue muy rapida
molestandote otra ves
tengo avilitados en php.ini

[PHP_MYSQLI]
extension=php_mysqli.dll

para utilizar mysqli_multi_query y lla ise lo que me dijieron
de echo no me marca ningun error cuando corro el script solo no me muestra la informacion de la seleccion en la tabla es algo raro jejjjee.

en todo caso le segire intentando y gracias por tu contestacion


Att ZaDer
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 14:10.