Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] llamar Procedimientos almacenados y luego ejecutar simple Query

Estas en el tema de llamar Procedimientos almacenados y luego ejecutar simple Query en el foro de PHP en Foros del Web. Tengo un problema: Tengo un programa de la siguiente manera: Código PHP: <? $link  =  mysqli_connect ( "localhost" ,  "usuario" ,  "contrasena" ,  "BaseDatos" ); ...
  #1 (permalink)  
Antiguo 10/10/2013, 16:14
 
Fecha de Ingreso: octubre-2010
Ubicación: La Paz Bolivia
Mensajes: 18
Antigüedad: 13 años, 5 meses
Puntos: 1
llamar Procedimientos almacenados y luego ejecutar simple Query

Tengo un problema:

Tengo un programa de la siguiente manera:

Código PHP:
<?
$link 
mysqli_connect("localhost""usuario""contrasena""BaseDatos");

$id_nombre=$_GET["id_nombre"];
$fecha=$_GET["fecha"];    //en formato aaaa-mm-dd

//Lo siguiente ejecuta correctamente, lo llamare PARTE A
$result mysqli_query($link"select * from usuarios WHERE idbanco=".$id_nombre.";");
        while(
$row mysqli_fetch_array($result)){
            
$nombre=$row["nombre"];
            
$apellido=$row["apellido"];
        }
echo 
$nombre." ".$apellido;
//Fin de la PARTE A

//Esto tambien ejecuta correctamente, lo llamare PARTE B

$result mysqli_query($link"call saldousuarioafecha(".$id_nombre.",'".$fecha."');");
        while(
$row mysqli_fetch_array($result)){
            
$saldoinicial=$row["SALDOINICIAL"]; // por el procedimiento almacenado que no voy a detallarlo esta dato siempre sera de una sola fila
        
}
echo 
$saldoinicial;
//Fin de la PARTE B

//En esta parte me muestra error la llamare PARTE C
$result mysqli_query($link"select * from datos WHERE idnombre=".$id_nombre." AND saldo<=".$saldoinicial.";");
        while(
$row mysqli_fetch_array($result)){ //Linea en la que dice error*
            
echo $row["saldo"]."<br>";
        }
//Fin de la PARTE C

?>
me muestra el mensaje de error:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/sistemas/balance/index_archivos/detalle.php on line X

Pero lo interesante es que si quito la PARTE B y asigno a la variable $saldoinicial un valor funciona correctamente

Ademas, si muevo la PARTE B encima de la PARTE A me muestra error en la PARTE A y PARTE C

a que se debe?

Gracias de ANtemano
  #2 (permalink)  
Antiguo 10/10/2013, 19:12
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: llamar Procedimientos almacenados y luego ejecutar simple Query

Hola
Sugerencias.

1.- Eres propenso a inyecciones sql.
Revisa Esto.

http://php.net/manual/es/mysqli.real-escape-string.php
http://www.php.net/manual/es/mysqli.prepare.php
http://www.php.net/manual/es/mysqli-stmt.bind-param.php
http://www.php.net/manual/es/mysqli-stmt.execute.php

2.- Revisa los errores de tus consultas.
http://www.php.net/manual/es/mysqli.error.php

El error dice que tu consulta esta mal y estas pasando un dato erroneo a mysqli_fetch_array().

Saludos
  #3 (permalink)  
Antiguo 11/10/2013, 07:36
 
Fecha de Ingreso: octubre-2010
Ubicación: La Paz Bolivia
Mensajes: 18
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: llamar Procedimientos almacenados y luego ejecutar simple Query

Despues de investigar un poco resolvi el problema cerrando la conexion y abriendola nuevamente segun lo que en contre en [URL="http://stackoverflow.com/questions/16339628/why-i-am-getting-the-error-commands-out-of-sync-you-cant-run-this-command-now"]http://stackoverflow.com/questions/16339628/why-i-am-getting-the-error-commands-out-of-sync-you-cant-run-this-command-now[/URL]

El codigo quedaria:

Código PHP:
<? 
$link 
mysqli_connect("localhost""usuario""contrasena""BaseDatos"); 

$id_nombre=$_GET["id_nombre"]; 
$fecha=$_GET["fecha"];    //en formato aaaa-mm-dd 

//Lo siguiente ejecuta correctamente, lo llamare PARTE A 
$result mysqli_query($link"select * from usuarios WHERE idbanco=".$id_nombre.";"); 
        while(
$row mysqli_fetch_array($result)){ 
            
$nombre=$row["nombre"]; 
            
$apellido=$row["apellido"]; 
        } 
echo 
$nombre." ".$apellido
//Fin de la PARTE A 

//Esto tambien ejecuta correctamente, lo llamare PARTE B 

$result mysqli_query($link"call saldousuarioafecha(".$id_nombre.",'".$fecha."');"); 
        while(
$row mysqli_fetch_array($result)){ 
            
$saldoinicial=$row["SALDOINICIAL"]; // por el procedimiento almacenado que no voy a detallarlo esta dato siempre sera de una sola fila 
        

echo 
$saldoinicial
//Fin de la PARTE B 

mysqli_close($link); //cierro la conexion


$link mysqli_connect("localhost""usuario""contrasena""BaseDatos");  // vuelvo a realizar la conexion


//En esta parte me muestra error la llamare PARTE C 
$result mysqli_query($link"select * from datos WHERE idnombre=".$id_nombre." AND saldo<=".$saldoinicial.";"); 
        while(
$row mysqli_fetch_array($result)){ //Linea en la que dice error* 
            
echo $row["saldo"]."<br>"
        } 
//Fin de la PARTE C 

?>
Gracias por las respuestas

Etiquetas: mysql, mysqli, procedimientos, query, simple
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 13:09.