Foros del Web » Programando para Internet » PHP »

Obtener valor de una funcion (procedimientos almacenados MySQL)

Estas en el tema de Obtener valor de una funcion (procedimientos almacenados MySQL) en el foro de PHP en Foros del Web. Mi duda es como crear una funcion que devuelva valores obtenidos de un procedmiento almacenado y luego mostrarlos en una pagina, como por ejemplo si ...
  #1 (permalink)  
Antiguo 28/07/2009, 10:11
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 1
Obtener valor de una funcion (procedimientos almacenados MySQL)

Mi duda es como crear una funcion que devuelva valores obtenidos de un procedmiento almacenado y luego mostrarlos en una pagina, como por ejemplo si quiero listar en una tabla los registros de una tabla pero solo los que a mi me interesan, como lo puedo hacer ?
Que debo utilizar en vez de mysql_result($consulta,0,"Campo1"); ya que esto me recupera el dato del campo1 del primer registro de una tabla.

Espero sus respuestas, con gran optimismo, saludos a todos !
  #2 (permalink)  
Antiguo 28/07/2009, 12:14
 
Fecha de Ingreso: noviembre-2008
Ubicación: W2.0
Mensajes: 103
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener valor de una funcion (procedimientos almacenados MySQL)

Tines que hacer un ciclo pàra recorrer todo los registros donde se cumpla la sentencia WHERE.

Cita:
$link = mysql_connect("xx","user","password") or die('Error connecting to mysql');
mysql_select_db("bd",$link);
$consulta=SELECT campos FROM tabla WHERE campo=filtro_que_deseo
$result = mysql_query ($consulta,$link);
while ($row = mysql_fetch_array($result))
{

sentencias......

}
  #3 (permalink)  
Antiguo 28/07/2009, 13:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Obtener valor de una funcion (procedimientos almacenados MySQL)

Lo que sucede es que tengo que hacerlo con un procedimiento almacenado, en este caso para listar todos los elementos de una tabla, el procedimiento almacenado que utilizo seria este:
create procedure listar()
begin
select * from Personas;
end;

Por lo tanto, este procedimiento almacenado me devuelve todos los registros de la tabla Personas, lo que quiero hacer es una llamada desde PHP a este procedimiento almacenado, y mostrar los campos necesarios, no todos los campos sino algunos, que yo necesite solamente. Entonces, como haria esto, desde PHP ?
  #4 (permalink)  
Antiguo 28/07/2009, 13:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Obtener valor de una funcion (procedimientos almacenados MySQL)

Para poder utilizar procedimientos almacenados necesitas usar la librería MySQLi o en dado caso PDO. La librería normal de PHP no tiene la capacidad de descargar resultados como esos de procedimientos almacenados.

Saludos.
  #5 (permalink)  
Antiguo 28/07/2009, 16:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Obtener valor de una funcion (procedimientos almacenados MySQL)

Entonces al utilizar mysqli, como debo realizar la obtencion de los datos con un procedimiento almacenado, en una pagina php ?
(Como tendria que ser el codigo php y el procedimiento almacenado?)

Por favor ayudenme con un ejemplo de como se consigue esto y mejor si es con mysqli !!!!

Gracias por sus respuestas !
  #6 (permalink)  
Antiguo 28/07/2009, 20:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Obtener valor de una funcion (procedimientos almacenados MySQL)

Usa mysqli_multi_query para leer los datos, en la pagina del Manual tienes ejemplos.

Saludos.
  #7 (permalink)  
Antiguo 30/07/2009, 09:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Obtener valor de una funcion (procedimientos almacenados MySQL)

Ya revise los ejemplos del manual, pero no logre entenderlo del todo, por lo que les pido que me puedan ayudar con un ejemplo de como usar procedimientos almacenados para recuperar un valor y que lo pueda asignar a una variable. Tengo creado un procedimiento almacenado en MySQL que cuenta todos los registros de una tabla (Personas) y esta definido de esta manera:
Código:
CREATE PROCEDURE contarRegistros()
Begin
     Select COUNT(*) From Personas;
End;
Este procedimiento almacenado al ejecutarlo me devuelve el numero de registros de la tabla Personas. Ejecuto el SP así, CALL contarRegistros();

En php lo que hacia sin procedimientos almacenados era la siguiente (la conexion ya establecida):
Código PHP:
$queryContar mysql_query("Select COUNT(*) From Personas");
$numRegistros mysql_result($queryContar0); 
En donde la variable $numRegistros almacena la cantidad de registros devuelta por la consulta. Y solo hace falta un echo para mostrar el numero de registros de la tabla Personas.

Yo quiero hacer lo mismo pero ejecutando el procedimiento almacenado contarRegistros(), y al tratar de hacer algo parecido, me sale un error en la funcion mysql_result, ya que con el 0 recupero el valor de la primera fila que me devuelve la consulta.
Despues de haber implementado mysqli en este ejercicio, ocurre algo similar, aunque la mayor duda seria el como ejecutar el SP y luego recuperar el valor que el SP en una variable, no se si usar mysqli_query, mysqli_multi_query, que parametros recibe ? Y para obtener el resultado, si utilizar mysqli_result o mysqli_use_result, y que parametros utilizar ! Ademas de como se utiliza las funciones de mysqli !!!
Les ruego que me ayuden a entender como puedo hacer uso de los StoreProcedures, de la forma mas facil. Saludos !!!
  #8 (permalink)  
Antiguo 30/07/2009, 15:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Obtener valor de una funcion (procedimientos almacenados MySQL)

En el Manual hay un ejemplo que podrías adaptar:
Código PHP:
Ver original
  1. <?php
  2. $link = mysqli_connect("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 = "CALL listar()";
  10.  
  11. /* execute multi query */
  12. if (mysqli_multi_query($link, $query)) {
  13.     do {
  14.         /* store first result set */
  15.         if ($result = mysqli_store_result($link)) {
  16.             while ($row = mysqli_fetch_row($result)) {
  17.                 printf("%s\n", $row[0]);
  18.             }
  19.             mysqli_free_result($result);
  20.         }
  21.         /* print divider */
  22.         if (mysqli_more_results($link)) {
  23.             printf("-----------------\n");
  24.         }
  25.     } while (mysqli_next_result($link));
  26. }
  27.  
  28. /* close connection */
  29. mysqli_close($link);

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 06:19.