Foros del Web » Programando para Internet » PHP »

Ayuda - mysqli Stored Procedures

Estas en el tema de Ayuda - mysqli Stored Procedures en el foro de PHP en Foros del Web. Estoy trabajando con Stored Procedures y PHP 5. Utilizo la librería mysqli para realizar la conexión. Tengo un problema que no puedo resolver. Luego de ...
  #1 (permalink)  
Antiguo 03/11/2008, 11:55
 
Fecha de Ingreso: mayo-2005
Mensajes: 21
Antigüedad: 18 años, 11 meses
Puntos: 0
Ayuda - mysqli Stored Procedures

Estoy trabajando con Stored Procedures y PHP 5. Utilizo la librería mysqli para realizar la conexión. Tengo un problema que no puedo resolver. Luego de llamar a un stored procedure que devuelve un recordset e intentar realizar otra consulta por más simple que sea, emite el siguiente error: Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in…. Es como si el link de la conexión no sirviera más y debo reconectarme para poder seguir realizando consultas.
Este es el código:

$link = mysqli_connect("localhost", "admin", "*****", "BaseDeDatos");

if (!$link) {
printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error());
exit();
}

mysqli_query($link, "SELECT * FROM operadores ");
printf("Affected rows: %d\n", mysqli_affected_rows($link));

$result = mysqli_query($link, "CALL DetallesFacturas(125);
printf("Affected rows: %d\n", mysqli_affected_rows($link));

mysqli_free_result($result);

mysqli_query($link, "SELECT * FROM operadores ");
printf("Affected rows: %d\n", mysqli_affected_rows($link));
mysql_error($link);


Devuelve lo siguiente:
Affected rows: 4
Affected rows: 1
Affected rows: 1
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in

Debería devolver:
Affected rows: 4
Affected rows: 1
Affected rows: 4 (Es =4 porque es la misma consulta que la primera)

Ahora si le agrego el $link = mysqli_connect…. Otra vez antes del la 3ra consulta funciona perfecto.


Bueno la idea es no conectarme todo el tiempo que llamo un stored procedure, y por otro lado no quiero usar “multi_query” ya que necesito llamar a un stored procedure que devuelve un dato y luego utilizarlo en otro!.

Si alguien sabe la respuesta o le sucedió algo parecido, agradecería mucho su ayuda.
  #2 (permalink)  
Antiguo 04/11/2008, 04:15
 
Fecha de Ingreso: mayo-2005
Mensajes: 21
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: Ayuda - mysqli Stored Procedures

Cita:
Iniciado por felipe_77 Ver Mensaje
Estoy trabajando con Stored Procedures y PHP 5. Utilizo la librería mysqli para realizar la conexión. Tengo un problema que no puedo resolver. Luego de llamar a un stored procedure que devuelve un recordset e intentar realizar otra consulta por más simple que sea, emite el siguiente error: Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in…. Es como si el link de la conexión no sirviera más y debo reconectarme para poder seguir realizando consultas.
Este es el código:

$link = mysqli_connect("localhost", "admin", "*****", "BaseDeDatos");

if (!$link) {
printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error());
exit();
}

mysqli_query($link, "SELECT * FROM operadores ");
printf("Affected rows: %d\n", mysqli_affected_rows($link));

$result = mysqli_query($link, "CALL DetallesFacturas(125);
printf("Affected rows: %d\n", mysqli_affected_rows($link));

mysqli_free_result($result);

mysqli_query($link, "SELECT * FROM operadores ");
printf("Affected rows: %d\n", mysqli_affected_rows($link));
mysql_error($link);


Devuelve lo siguiente:
Affected rows: 4
Affected rows: 1
Affected rows: 1
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in

Debería devolver:
Affected rows: 4
Affected rows: 1
Affected rows: 4 (Es =4 porque es la misma consulta que la primera)

Ahora si le agrego el $link = mysqli_connect…. Otra vez antes del la 3ra consulta funciona perfecto.


Bueno la idea es no conectarme todo el tiempo que llamo un stored procedure, y por otro lado no quiero usar “multi_query” ya que necesito llamar a un stored procedure que devuelve un dato y luego utilizarlo en otro!.

Si alguien sabe la respuesta o le sucedió algo parecido, agradecería mucho su ayuda.
Disculpen si no fuí muy claro.

Mi problema principalmente es que debo volver a conectarme cada vez que llamo a un stored procedure si luego quiero seguir haciendo una query básica o llamar a otro stored procedure!!! Es como si el link que genero no sirve más, debo generar uno nuevo. Podrá ser un tema de configuración???

Muchas Gracias…
  #3 (permalink)  
Antiguo 04/11/2008, 09:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ayuda - mysqli Stored Procedures

Prueba usar MYSQLI_USE_RESULT, en tu query que estas llamando al Stored Procedure.

Saludos.
  #4 (permalink)  
Antiguo 04/11/2008, 09:56
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Ayuda - mysqli Stored Procedures

varon no sera por que no cierras correctamente la sentencia al momento de llamar al pocedimeinto:

esta asi:
$result = mysqli_query($link, "CALL DetallesFacturas(125);


deberia ser:
$result = mysqli_query($link, "CALL DetallesFacturas(125)");


suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #5 (permalink)  
Antiguo 04/11/2008, 10:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 21
Antigüedad: 18 años, 11 meses
Puntos: 0
MasterOjitos:
El código que pegué le falta el paréntesis es verdad. Pero el error no viene por ese lado. Es un error al pegarlo aquí. Perdón!

Muchas Gracias igualmente.

Gracias GatorV lo voy a probar!

Última edición por GatorV; 04/11/2008 a las 10:33
  #6 (permalink)  
Antiguo 06/11/2008, 05:23
 
Fecha de Ingreso: mayo-2005
Mensajes: 21
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: Ayuda - mysqli Stored Procedures

Lo resolví así:

Luego de la llamada de un Stored Procedure agrego las siguientes líneas:

if(mysqli_more_results($link))
{
mysqli_next_result($link);
}


De esta manera puedo seguir haciendo consultas con el mismo link de conexión. Sin necesidad de reconectarme.
Solamente cuando llamo un stored procedure debo agregarla.

Saludos, Felipe.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:35.