Foros del Web » Programando para Internet » PHP »

problemas con consultas multiples php mysql

Estas en el tema de problemas con consultas multiples php mysql en el foro de PHP en Foros del Web. Buenas, tengo un problema con php y mysql, y es que luego de llamar a un store procedure, no me deja seguir ejecutando consultas. Es ...

  #1 (permalink)  
Antiguo 28/12/2011, 10:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
problemas con consultas multiples php mysql

Buenas, tengo un problema con php y mysql, y es que luego de llamar a un store procedure, no me deja seguir ejecutando consultas. Es decir, no arroja error alguno, pero las consultas no las ejecuta.

dejo un fragmento del codigo php asi pueden verlo:

Código PHP:
<?
include("../seguridad/logueado.php");
$mail $_SESSION['usuario'];

// CONECTAMOS A LA BASE DE DATOS
    
require("../database/database.php"); //este archivo guarda los datos de la db
    
$conexion mysqli_connect($host$user $passdb);
    if(!
$conexion){
        echo 
"No se pudo conectar con la base de datos";
    }
    else {
        
mysqli_select_db($conexion$db);
    }

$datosquery "call datos_usuario('".$mail."');";
$datos mysqli_query($conexion$datosquery);

if(
$row mysqli_fetch_assoc($datos)){
    
$nombre $row['nombre'];
    
$apellido $row['apellido'];
    
$dni $row['dni'];
    
$fechaNacimiento $row['fecha_nacimiento'];
    
$pais $row['pais'];
    
$provincia    $row['provincia'];
    
$ciudad $row['ciudad'];
    
$telefono $row['telefono'];
    
$profesion $row['profesion'];
    
$rubro $row['profesion_rubro'];
    
$intereses $row['intereses'];
    
$imagen $row['imagen'];
    
$establecimiento $row['establecimiento'];
    
$actividad $row['actividad'];
    
$sexo $row['sexo'];
    
    
$fechaArray explode("/"$fechaNacimiento);        
    
$dia $fechaArray[0];
    
$mes $fechaArray[1];
    
$año $fechaArray[2];
}
mysqli_free_result($datos);
?>
Esto se ejecuta al comienzo del documento php. luego, varias lineas que definen el formato de la pagina (html) y por ejemplo, en alguna parte de este documento:

Código HTML:
 <tr>
          <td width="78"><label>
          <select name="pais" class="textfield3" id="pais">
		  <?
		  $paicesquery = "select nombre from paices;";
		  $paicesresult = mysqli_query($conexion, $paicesquery);
		  while($paices = mysqli_fetch_assoc($paicesresult)){
		  		echo '<option value="'.$paices['nombre'].'"';
				if($paices['nombre'] == $pais){
					echo ' selected="selected"';
				}
 				echo '>'.$paices['nombre'].'</option>';
		  }
		  mysqli_free_result($paicesresult);
		  ?>
           </select>
          </label></td> 
esta ultima consulta ($paicesquery) no la ejecuta. Alguna idea que podrá ser?

Aclaración: si comento la parte de la llamada al procedimiento, la segunda consulta si la ejecuta, por ende eso funciona.

Gracias desde ya!
  #2 (permalink)  
Antiguo 28/12/2011, 10:15
 
Fecha de Ingreso: agosto-2011
Ubicación: DF
Mensajes: 44
Antigüedad: 12 años, 8 meses
Puntos: 10
Respuesta: problemas con consultas multiples php mysql

tu tabla se llama "paices" y no pises ?????
  #3 (permalink)  
Antiguo 28/12/2011, 10:25
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por jjjericu Ver Mensaje
tu tabla se llama "paices" y no pises ?????
la tabla de la cual leo los nombres de los paices se llama "paices"
  #4 (permalink)  
Antiguo 28/12/2011, 10:25
 
Fecha de Ingreso: agosto-2008
Ubicación: Torrelles de Llobregat, Barcelona
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Hola Coco,

PHP debería darte algún mensaje de error en el caso de que existiera algún error de código o de sintaxis. De no ser así es posible que tu consulta esté dando algún tipo de error en la base de datos. Prueba esto:

1. introduce la linea "ini_set('display_errors', 1);" en el inicio de tu código. Esto forzará la activación de muestreo de errores de php y si existe algún error de código te aparecerá al recargar la página. Una vez lo tengas comenta o elimina la línea.

2. introduce el código "or die(mysqli_error());" después de mysqli_query(). Esto hará que si la consulta no es correcta se vuelque el error que da la base de datos en la página.

3. Si nada de esto funciona, es posible que tengas un error de lado de servidor. Veo que utilizas el código "<?" para definir los scripts en PHP, hace tiempo descubrí que esta forma de declarar la apertura funciona bien en linux pero a veces presenta errores con servidores windows. Para ser estándar te aconsejaría que siempre que abras un bloque de script en php utilices la forma completa "<?php", que es válida en todas las plataformas.

Quedo a la espera de que pruebes esto y me digas si te ha salido algún error.

Saludos.
  #5 (permalink)  
Antiguo 28/12/2011, 10:28
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por coco2287 Ver Mensaje
la tabla de la cual leo los nombres de los paices se llama "paices"
Me acabo de dar cuenta el error de ortografía, pero (supongo que ya sabras) no influye en la funcionalidad de la consulta. Alguna idea de por que no funciona?
  #6 (permalink)  
Antiguo 28/12/2011, 10:29
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: problemas con consultas multiples php mysql

saca los mysqli_free_result y fijate bien en el medio no te de algun error oculto
  #7 (permalink)  
Antiguo 28/12/2011, 10:29
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por jmdesarrollo Ver Mensaje
Hola Coco,

PHP debería darte algún mensaje de error en el caso de que existiera algún error de código o de sintaxis. De no ser así es posible que tu consulta esté dando algún tipo de error en la base de datos. Prueba esto:

1. introduce la linea "ini_set('display_errors', 1);" en el inicio de tu código. Esto forzará la activación de muestreo de errores de php y si existe algún error de código te aparecerá al recargar la página. Una vez lo tengas comenta o elimina la línea.

2. introduce el código "or die(mysqli_error());" después de mysqli_query(). Esto hará que si la consulta no es correcta se vuelque el error que da la base de datos en la página.

3. Si nada de esto funciona, es posible que tengas un error de lado de servidor. Veo que utilizas el código "<?" para definir los scripts en PHP, hace tiempo descubrí que esta forma de declarar la apertura funciona bien en linux pero a veces presenta errores con servidores windows. Para ser estándar te aconsejaría que siempre que abras un bloque de script en php utilices la forma completa "<?php", que es válida en todas las plataformas.

Quedo a la espera de que pruebes esto y me digas si te ha salido algún error.

Saludos.
Muchisimas gracias! ya me pongo a probar y te comento que sale
  #8 (permalink)  
Antiguo 28/12/2011, 10:33
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas con consultas multiples php mysql

$paicesquery = "select nombre from paices;"; el punto y coma dentro de la consulta?? eliminalo

$paicesquery = "select nombre from paices";

y aqui tambien

$datosquery = "call datos_usuario('".$mail."');";

$datosquery = "call datos_usuario('".$mail."')";
  #9 (permalink)  
Antiguo 28/12/2011, 10:42
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Bueno, tal como dijo Patriarka eliminé los mysqli_free_result, ademas como dijo webankenovi elimine los ";" de dentro de las consultas, y siguiendo los consejos de jmdesarrollo cambie los "<?" por "<?php", y agregué el "ini_set('display_errors', 1);" al comienzo del script. Hasta aquí no hubo cambios, pero cuando puse el "or die(mysqli_error());" luego del "mysqli_query();" el sitio dejó de cargarse. ES decir, no arrojo error, pero tampoco se cargó el resto del documento
  #10 (permalink)  
Antiguo 28/12/2011, 10:45
 
Fecha de Ingreso: agosto-2008
Ubicación: Torrelles de Llobregat, Barcelona
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Prueba a escribir la variable $conexion como parametro de la función mysqli_error(). Quedaría como mysqli_error($conexion)
  #11 (permalink)  
Antiguo 28/12/2011, 10:46
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: problemas con consultas multiples php mysql

si paso eso es por dejaste algo mal, mira bien tu codigo
  #12 (permalink)  
Antiguo 28/12/2011, 10:47
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por jmdesarrollo Ver Mensaje
Prueba a escribir la variable $conexion como parametro de la función mysqli_error(). Quedaría como mysqli_error($conexion)
no me produce ningun cambio :(
  #13 (permalink)  
Antiguo 28/12/2011, 10:50
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas con consultas multiples php mysql

$paicesresult = mysqli_query($conexion, $paicesquery);

pruebalo al reves

$paicesresult = mysqli_query( $paicesquery,$conexion) or die (mysqli_error());
$datos = mysqli_query($datosquery,$conexion) or die (mysqli_error());

añade los errores y comentas que sucedio
  #14 (permalink)  
Antiguo 28/12/2011, 10:53
 
Fecha de Ingreso: agosto-2008
Ubicación: Torrelles de Llobregat, Barcelona
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Voy a probar tu codigo en mi máquina a ver si puedo depurar el error en local. 10 min.
  #15 (permalink)  
Antiguo 28/12/2011, 10:55
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas con consultas multiples php mysql

y modifica esta linea solo con la bd

mysqli_select_db($db); puesto que ya te as conectado anteriormente
  #16 (permalink)  
Antiguo 28/12/2011, 11:02
 
Fecha de Ingreso: agosto-2008
Ubicación: Torrelles de Llobregat, Barcelona
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Coco, tu código php tal como lo tenías originalmente es correcto puesto que lo he ejecutado en

http://forja.jmdesarrollo.com/index.php

y como verás tiene salida de datos.

Mi siguiente pregunta por lo tanto es, ¿Tiene el usuario con el que estás realizando la conexión permisos de lectura (SELECT) para la base de datos seleccionada?
  #17 (permalink)  
Antiguo 28/12/2011, 11:03
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas con consultas multiples php mysql

podria ser algo asi

Código PHP:
Ver original
  1. <?php
  2. include("../seguridad/logueado.php");
  3. $mail = $_SESSION['usuario'];
  4.  
  5. // CONECTAMOS A LA BASE DE DATOS
  6.     require("../database/database.php"); //este archivo guarda los datos de la db
  7.     $conexion = mysqli_connect($host, $user , $passdb);
  8.     if(!$conexion){
  9.         echo "No se pudo conectar con la base de datos";
  10.     }
  11.     else {
  12.         mysqli_select_db($db);
  13.     }
  14.  
  15. $datosquery = "call datos_usuario('".$mail."')";
  16. $datos = mysqli_query($datosquery,$conexion) or die (mysqli_error());
  17.  
  18. if($row = mysqli_fetch_assoc($datos)){
  19.     $nombre = $row['nombre'];
  20.     $apellido = $row['apellido'];
  21.     $dni = $row['dni'];
  22.     $fechaNacimiento = $row['fecha_nacimiento'];
  23.     $pais = $row['pais'];
  24.     $provincia    = $row['provincia'];
  25.     $ciudad = $row['ciudad'];
  26.     $telefono = $row['telefono'];
  27.     $profesion = $row['profesion'];
  28.     $rubro = $row['profesion_rubro'];
  29.     $intereses = $row['intereses'];
  30.     $imagen = $row['imagen'];
  31.     $establecimiento = $row['establecimiento'];
  32.     $actividad = $row['actividad'];
  33.     $sexo = $row['sexo'];
  34.    
  35.     $fechaArray = explode("/", $fechaNacimiento);        
  36.     $dia = $fechaArray[0];
  37.     $mes = $fechaArray[1];
  38.     $año = $fechaArray[2];
  39. }
  40. ?>

Código PHP:
Ver original
  1. <tr>
  2.           <td width="78"><label>
  3.           <select name="pais" class="textfield3" id="pais">
  4.           <?php
  5.           $paicesquery = "select nombre from paices";
  6.           $paicesresult = mysqli_query($paicesquery,$conexion) or die (mysqli_error());
  7.           while($paices = mysqli_fetch_assoc($paicesresult)){
  8.                 echo '<option value="'.$paices['nombre'].'"';
  9.                 if($paices['nombre'] == $pais){
  10.                     echo ' selected="selected"';
  11.                 }
  12.                 echo '>'.$paices['nombre'].'</option>';
  13.           }
  14.           mysqli_free_result($paicesresult);
  15.           ?>
  16.            </select>
  17.           </label></td>
  #18 (permalink)  
Antiguo 28/12/2011, 11:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por webankenovi Ver Mensaje
y modifica esta linea solo con la bd

mysqli_select_db($db); puesto que ya te as conectado anteriormente
la modificacion a mysqli_select_db($db); me produjo el siguiente error:

"Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in ..."

y la modificación a

$datos = mysqli_query($datosquery,$conexion) or die (mysqli_error());

produjo el siguiente error:

"Warning: mysqli_query() expects parameter 1 to be mysqli, string given in ..."

"Warning: mysqli_error() expects exactly 1 parameter, 0 given in ..."
  #19 (permalink)  
Antiguo 28/12/2011, 11:05
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas con consultas multiples php mysql

pues dejalo como estaba pero añade or die (mysqli_error()); para saber que te falla tal y como lo tenias , lo que te dije eran comprobaciones para ver si daba con ello
  #20 (permalink)  
Antiguo 28/12/2011, 11:05
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por jmdesarrollo Ver Mensaje
Coco, tu código php tal como lo tenías originalmente es correcto puesto que lo he ejecutado en

http://forja.jmdesarrollo.com/index.php

y como verás tiene salida de datos.

Mi siguiente pregunta por lo tanto es, ¿Tiene el usuario con el que estás realizando la conexión permisos de lectura (SELECT) para la base de datos seleccionada?

El usuario con el que conecto actualmente es root.
  #21 (permalink)  
Antiguo 28/12/2011, 11:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

podrá ser algo relacionado a la version del mysql?
  #22 (permalink)  
Antiguo 28/12/2011, 11:11
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas con consultas multiples php mysql

es decir deja todo tu codigo tal y como lo pusiste al pricnipi o y solo cambia esto

$datos = mysqli_query($conexion, $datosquery) or die (mysqli_error);

y

$paicesresult = mysqli_query($conexion,$paicesquery) or die (mysqli_error());

y nos cuentas que errores te salen
  #23 (permalink)  
Antiguo 28/12/2011, 11:11
 
Fecha de Ingreso: agosto-2008
Ubicación: Torrelles de Llobregat, Barcelona
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Asumiendo que ROOT tenga permisos de lectura (cosa que entiendo asumes como obvio) ¿Están bien escritos los nombres de las tablas y de las columnas de la tabla que estás consultando?
  #24 (permalink)  
Antiguo 28/12/2011, 11:15
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por jmdesarrollo Ver Mensaje
Asumiendo que ROOT tenga permisos de lectura (cosa que entiendo asumes como obvio) ¿Están bien escritos los nombres de las tablas y de las columnas de la tabla que estás consultando?
jeje, si, asumo que root tiene esos permisos, de hecho como te dije antes, si comento la parte en la que hago la llamada al store procedure de manera que saltee ese bloque, y haga directamente la consulta select, funciona perfectamente por lo que los permisos los tiene, pero claro, necesito hacer esa llamada al procedimiento :P

Cita:
Iniciado por webankenovi Ver Mensaje
es decir deja todo tu codigo tal y como lo pusiste al pricnipi o y solo cambia esto

$datos = mysqli_query($conexion, $datosquery) or die (mysqli_error);

y

$paicesresult = mysqli_query($conexion,$paicesquery) or die (mysqli_error());

y nos cuentas que errores te salen
dejandolo asi como me dijeron vos y jm - con el or die(mysqli_error()); - no me muestra ningun error de tipo mysql, en cambio, lo que hace es que el resto de la pagina (html) no se cargue.
  #25 (permalink)  
Antiguo 28/12/2011, 11:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por jmdesarrollo Ver Mensaje
Asumiendo que ROOT tenga permisos de lectura (cosa que entiendo asumes como obvio) ¿Están bien escritos los nombres de las tablas y de las columnas de la tabla que estás consultando?
los nombres de tablas y columnas estan correctos, te juro que me canse de comprobarlo jeje
  #26 (permalink)  
Antiguo 28/12/2011, 11:19
 
Fecha de Ingreso: agosto-2008
Ubicación: Torrelles de Llobregat, Barcelona
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
$año = $fechaArray[2];
Puedes quitar la "ñ" de esta variable y sustituirla por "ny"? A veces estas cosas hacen que los programas funcionen raro.
  #27 (permalink)  
Antiguo 28/12/2011, 11:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por jmdesarrollo Ver Mensaje
Puedes quitar la "ñ" de esta variable y sustituirla por "ny"? A veces estas cosas hacen que los programas funcionen raro.
probé pero no modifica nada :(
  #28 (permalink)  
Antiguo 28/12/2011, 11:23
 
Fecha de Ingreso: agosto-2008
Ubicación: Torrelles de Llobregat, Barcelona
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Haz esto: quita los die() y haz un echo de las consultas. Carga la página, copia cada consulta por separado y cargalas en un cliente de base de datos o desde un phpmyadmin, y a ver qué te dice el programa. Sobretodo en lo relativo a esa consulta CALL.
  #29 (permalink)  
Antiguo 28/12/2011, 11:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por jmdesarrollo Ver Mensaje
Haz esto: quita los die() y haz un echo de las consultas. Carga la página, copia cada consulta por separado y cargalas en un cliente de base de datos o desde un phpmyadmin, y a ver qué te dice el programa. Sobretodo en lo relativo a esa consulta CALL.
dame unos minutos, ya te comento
  #30 (permalink)  
Antiguo 28/12/2011, 11:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problemas con consultas multiples php mysql

Cita:
Iniciado por coco2287 Ver Mensaje
los nombres de tablas y columnas estan correctos, te juro que me canse de comprobarlo jeje
Ten cuidado si trabajas con Linux en el servidor. Linux es sensible a MAYUSCULAS/minusculas, por lo que "Paises" y "paises" son nombres de tablas diferentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: html, multiples, mysql, usuarios
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 16:49.