Foros del Web » Programando para Internet » PHP »

Stored Procedure (mysql) por PHP

Estas en el tema de Stored Procedure (mysql) por PHP en el foro de PHP en Foros del Web. Buen dia! Es mi primer post, se debe unas dudas que tengo sobre los procedimientos almacenados en php. Como actualice la version de mysql y ...
  #1 (permalink)  
Antiguo 29/10/2008, 08:34
Avatar de dani1824  
Fecha de Ingreso: octubre-2008
Ubicación: Laferrere - Buenos Aires
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Stored Procedure (mysql) por PHP

Buen dia!

Es mi primer post, se debe unas dudas que tengo sobre los procedimientos almacenados en php.

Como actualice la version de mysql y php queria probar esta funcionalidad con algo simple como esto.



Código PHP:

$STORED
="   CREATE PROCEDURE `prueba_sp`(IN mi_parametro INT)
            BEGIN
            SELECT *  FROM tabla WHERE id=mi_parametro;
            END;            
        "
;

mysql_query($STORED)or die(mysql_error());


$STORED2="CALL prueba_sp (26)"
$pk=mysql_query($STORED2)or die(mysql_error());
$rs=mysql_fetch_assoc($pk);
print_r($rs); 

Si por consola escribo "CALL prueba_sp (26)" , me devuelve el resultado correcto, pero en linea de codigo devuelve este error:

PROCEDURE prueba_sp can't return a result set in the given context.


Desde ya muchas gracias por el tiempo dedicado.
  #2 (permalink)  
Antiguo 29/10/2008, 09:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Stored Procedure (mysql) por PHP

Hola dani1824,

Para usar stored procedures, debes de usar la extensión mysqli de PHP, no la extensión mysql normal no es posible hacerlo.

Saludos.
  #3 (permalink)  
Antiguo 29/10/2008, 09:51
Avatar de dani1824  
Fecha de Ingreso: octubre-2008
Ubicación: Laferrere - Buenos Aires
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Stored Procedure (mysql) por PHP

Hola!


Aplique mysqli y me funciono para procedimientos sin parametros asi:


Código PHP:
if (!$mysqli->query"CALL prueba_sp();" )) {
    
printf("Oooops!: %s\n"$mysqli->error);
}
else
{
    
$res=$mysqli->multi_query"CALL prueba_sp();" );
    
        do {
                if (
$result $mysqli->store_result()) 
                {
                
                
                      while( 
$row $result->fetch_row() ) 
                      {
                          
                        foreach( 
$row as $cell 
                        echo 
$cell"<br/>";
                        
                      }
                
$result->close();
                
                if( 
$mysqli->more_results() ) 
                echo 
"<br/>";
                
                }
        
        } while( 
$mysqli->next_result() );
  
  
    
}

$mysqli->close(); 
Cuando estableci un parametro
Código PHP:
$mysqli->multi_query"CALL prueba_sp(@a);SELECT @a" 
, me aparecia este error:


Result consisted of more than one row


Como seria cuando se quiere que funcione con parametros?


Muchas gracias!!
  #4 (permalink)  
Antiguo 29/10/2008, 09:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Stored Procedure (mysql) por PHP

Usa mysqli::more_results y mysqli::next_result para moverte en los resultados, y poder descargar los datos, también recuerda llamar a multi_query.

Un ejemplo del manual:
Código php:
Ver original
  1. <?php
  2. $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
  3.  
  4. /* check connection */
  5.     printf("Connect failed: %s\n", mysqli_connect_error());
  6.     exit();
  7. }
  8.  
  9. $query  = "SELECT CURRENT_USER();";
  10. $query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";
  11.  
  12. /* execute multi query */
  13. if ($mysqli->multi_query($query)) {
  14.     do {
  15.         /* store first result set */
  16.         if ($result = $mysqli->store_result()) {
  17.             while ($row = $result->fetch_row()) {
  18.                 printf("%s\n", $row[0]);
  19.             }
  20.             $result->free();
  21.         }
  22.         /* print divider */
  23.         if ($mysqli->more_results()) {
  24.             printf("-----------------\n");
  25.         }
  26.     } while ($mysqli->next_result());
  27. }
  28.  
  29. /* close connection */
  30. $mysqli->close();

Saludos.
  #5 (permalink)  
Antiguo 31/10/2008, 07:01
Avatar de dani1824  
Fecha de Ingreso: octubre-2008
Ubicación: Laferrere - Buenos Aires
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Stored Procedure (mysql) por PHP

Lo solucione, gracias a este post:

http://www.forosdelweb.com/f18/ejecutar-store-procedure-mysql-desde-php-477484/


Saludos!
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 03:01.