Foros del Web » Programando para Internet » PHP »

Consulta Múltiple a Mysql con PHP

Estas en el tema de Consulta Múltiple a Mysql con PHP en el foro de PHP en Foros del Web. Intento mostrar los resultados de esta consulta ejecutada con mysqli_multi_query, puesto a que el unico ejemplo que encontre fue el del manual lo he querido ...
  #1 (permalink)  
Antiguo 13/07/2013, 12:36
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 11 años, 5 meses
Puntos: 2
Consulta Múltiple a Mysql con PHP

Intento mostrar los resultados de esta consulta ejecutada con mysqli_multi_query, puesto a que el unico ejemplo que encontre fue el del manual lo he querido implementar a mi codigo pero no consigo buenos resultados :/. Que estoy haciendo mal?

Código PHP:
   function consultar() {
                
$mysqli = new mysqli('localhost''root''root123''soptecvnzla');

if (
$mysqli->connect_errno)
  {
  echo 
"Error en Conexión: " $mysqli->connect_error;
  }
  
       
extract($_POST);


            
$query "SELECT
 
software.tipo_s,
caracteristicas_software.fabricante,
caracteristicas_software.licencia,
caracteristicas_software.version,
caracteristicas_software.observaciones_s
FROM equipo
INNER JOIN 

caracteristicas_software

ON '$codigo'= equipo.codigo AND equipo.codigo = 

caracteristicas_software.codigo  
INNER JOIN software ON 

caracteristicas_software.id_software = 

software.id_software;"


$query .= "SELECT 
equipo.codigo,
equipo.responsable,
equipo.ubicacion,
hardware.tipo_h,
caracteristicas_hardware.modelo,
caracteristicas_hardware.marca,
caracteristicas_hardware.serial,
caracteristicas_hardware.observaciones_h
FROM equipo
INNER JOIN 

caracteristicas_hardware 

ON '$codigo'= equipo.codigo AND equipo.codigo = caracteristicas_hardware.codigo 
 
INNER JOIN hardware ON 

caracteristicas_hardware.id_hardware = hardware.id_hardware"
;   

$result=$mysqli->multi_query($query); 
    do {
        
/* almacenar primer juego de resultados */
        
if ($result $mysqli->store_result()) {
            while (
$row $result->fetch_row()) {
                for (
$i=0;$row[$i];$i++) {
                    
printf ("%s \n"$row[$i]);
            }
            
$result->free();
        }
        
/* mostrar divisor */
        
if ($mysqli->more_results()) {
            
printf("-----------------\n");
        }
    } while (
$mysqli->next_result());












  } 
  #2 (permalink)  
Antiguo 13/07/2013, 12:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Consulta Múltiple a Mysql con PHP

Imprime la consulta con echo $query; cópiala y ejecútala en PhpMyAdmin... obtienes resultados?
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 13/07/2013, 12:47
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Consulta Múltiple a Mysql con PHP

Si las consultas en phpmyadmin funcionan y me arrojan los resultados que quiero.

Ahora he modificado el código y me arroja pero solo los resultados del primer Select, que estoy haciendo mal?



Código PHP:
   function consultar() {
                
$mysqli = new mysqli('localhost''root''root123''soptecvnzla');

if (
$mysqli->connect_errno)
  {
  echo 
"Error en Conexión: " $mysqli->connect_error;
  }
  
       
extract($_POST);


            
$query "SELECT
 
software.tipo_s,
caracteristicas_software.fabricante,
caracteristicas_software.licencia,
caracteristicas_software.version,
caracteristicas_software.observaciones_s
FROM equipo
INNER JOIN 

caracteristicas_software

ON '$codigo'= equipo.codigo AND equipo.codigo = 

caracteristicas_software.codigo  
INNER JOIN software ON 

caracteristicas_software.id_software = 

software.id_software;"


$query .= "SELECT 
equipo.codigo,
equipo.responsable,
equipo.ubicacion,
hardware.tipo_h,
caracteristicas_hardware.modelo,
caracteristicas_hardware.marca,
caracteristicas_hardware.serial,
caracteristicas_hardware.observaciones_h
FROM equipo
INNER JOIN 

caracteristicas_hardware 

ON '$codigo'= equipo.codigo AND equipo.codigo = caracteristicas_hardware.codigo 
 
INNER JOIN hardware ON 

caracteristicas_hardware.id_hardware = hardware.id_hardware"
;   

$result=$mysqli->multi_query($query); 

            do {
if (
$result $mysqli->store_result()) {
            while (
$row $result->fetch_assoc()) {
                
                    
                    
                    
extract($row);
                    
                echo 
$tipo_s;
                echo 
$fabricante;
                echo 
$observaciones_s;
                echo 
$licencia;
                echo 
$version;
                
                    
                    
            
                }
}

                } while (
$mysqli->next_result() && $mysqli->more_results());
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   }
   } 

Última edición por AnGuisi; 13/07/2013 a las 16:01
  #4 (permalink)  
Antiguo 13/07/2013, 19:38
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 11 años, 5 meses
Puntos: 2
Sonrisa :stress: Consulta con mysqli_multi_query

Estoy haciendo la consulta con mysqli_multi_query y me he topado con varios errores en mi codigo.

Esta es el codigo de la funcion
Código PHP:
   function consultar() {
                
$mysqli = new mysqli('localhost''root''root123''soptecvnzla');

if (
$mysqli->connect_errno)
  {
  echo 
"Error en Conexión: " $mysqli->connect_error;
  }
  
       
extract($_POST);


            
$query "SELECT
 
software.tipo_s,
caracteristicas_software.fabricante,
caracteristicas_software.licencia,
caracteristicas_software.version,
caracteristicas_software.observaciones_s
FROM equipo
INNER JOIN 

caracteristicas_software

ON '$codigo'= equipo.codigo AND equipo.codigo = 

caracteristicas_software.codigo  
INNER JOIN software ON 

caracteristicas_software.id_software = 

software.id_software;"


$query .= "SELECT 
equipo.codigo,
equipo.responsable,
equipo.ubicacion,
hardware.tipo_h,
caracteristicas_hardware.modelo,
caracteristicas_hardware.marca,
caracteristicas_hardware.serial,
caracteristicas_hardware.observaciones_h
FROM equipo
INNER JOIN 

caracteristicas_hardware 

ON '$codigo'= equipo.codigo AND equipo.codigo = caracteristicas_hardware.codigo 
 
INNER JOIN hardware ON 

caracteristicas_hardware.id_hardware = hardware.id_hardware"
;   

$result=$mysqli->multi_query($query); 

            do {
if (
$result $mysqli->store_result()) {
            while (
$row $result->fetch_assoc()) {
                
                    
                    
    echo 
'Software: ' .$row["tipo_s"]. '<br>';
    echo 
'Licencia: ' .$row["licencia"]. '<br>';
    echo 
'Fabricante: ' .$row["fabricante"]. '<br>';
    echo 
'Version: ' .$row["version"]. '<br>';
    echo 
'Observaciones: ' .$row["observaciones_s"]. '<br>';
    echo 
'<br><br><br>';
    echo 
'Hardware: ' .$row["tipo_h"]. '<br>';
    echo 
'Marca: ' .$row["marca"]. '<br>';
    echo 
'Modelo: ' .$row["modelo"]. '<br>';
    echo 
'Serial: ' .$row["serial"]. '<br>';
    echo 
'Observaciones: ' .$row["observaciones_h"]. '<br>';
                    
                    
                    
            
                }
                
}
    
if (!
$mysqli->more_results()) {
    
    exit ();
    
    }

                } while (
$mysqli->next_result()  );
            

   
   }
   } 
Y aqui donde hago el llamado

Código PHP:
<? include 'clases/clssentenciasmysql.php';

$consulta=new clssentenciasmysql;


$consulta->consultar();

?>
Me arroja los datos que quiero pero me los muestra mostrando filas vacias que no existen en mi base de datos.
Esto es lo que muestra
Código PHP:
&#65279;Software: Sistema Operativo
LicenciaSi
Fabricante
Microsoft
Version
Windows 8
Observaciones
Crackeado



Hardware

Marca
Modelo
Serial
Observaciones
SoftwareHoja de Cálculo
Licencia
No
Fabricante
Microsoft
Version
2013
Observaciones
Office Excell



Hardware

Marca
Modelo
Serial
Observaciones
Software
Licencia
Fabricante
Version
Observaciones



HardwareDisco Duro
Marca
Toshiba
Modelo
0-50
Serial
123
Observaciones
350 GB
Software

Licencia
Fabricante
Version
Observaciones



HardwareMemoria
Marca
Kingstom
Modelo
DDR3
Serial
35487
Observaciones
2 GB 
Quisiera saber por que :(

Por otro lado he querido manejar las variables con los resultados que arroja la consulta en la pagina donde hago el llamado para esto he implementado el siguiente fallido metodo.

Código PHP:
function consultar() {
                
$mysqli = new mysqli('localhost''root''root123''soptecvnzla');

if (
$mysqli->connect_errno)
  {
  echo 
"Error en Conexión: " $mysqli->connect_error;
  }
  
       
extract($_POST);


            
$query "SELECT
 
software.tipo_s,
caracteristicas_software.fabricante,
caracteristicas_software.licencia,
caracteristicas_software.version,
caracteristicas_software.observaciones_s
FROM equipo
INNER JOIN 

caracteristicas_software

ON '$codigo'= equipo.codigo AND equipo.codigo = 

caracteristicas_software.codigo  
INNER JOIN software ON 

caracteristicas_software.id_software = 

software.id_software;"


$query .= "SELECT 
equipo.codigo,
equipo.responsable,
equipo.ubicacion,
hardware.tipo_h,
caracteristicas_hardware.modelo,
caracteristicas_hardware.marca,
caracteristicas_hardware.serial,
caracteristicas_hardware.observaciones_h
FROM equipo
INNER JOIN 

caracteristicas_hardware 

ON '$codigo'= equipo.codigo AND equipo.codigo = caracteristicas_hardware.codigo 
 
INNER JOIN hardware ON 

caracteristicas_hardware.id_hardware = hardware.id_hardware"
;   

$result=$mysqli->multi_query($query); 
$rows=array();
            do {
if (
$result $mysqli->store_result()) {
            while (
$row $result->fetch_assoc()) {
                
                    
                    
                    
$rows[] = $row;
                    
                    
                    
            
                }
                
}
    return 
$rows;
if (!
$mysqli->more_results()) {
    
    exit ();
    
    }

                } while (
$mysqli->next_result()  ); 
La función

Código PHP:
<? include 'clases/clssentenciasmysql.php';

$consulta=new clssentenciasmysql;


$rows $consulta->consultar();
foreach (
$rows as $row) {
      
      
printf ("%s\n",$row["tipo_s"]);
      
printf ("%s\n",$row["licencia"]);
       
printf ("%s\n",$row["fabricante"]);
        
printf ("%s\n",$row["version"]);
         
printf ("%s\n",$row["observaciones_s"]);
         
printf ("%s\n",$row["tipo_h"]);
         
printf ("%s\n",$row["marca"]);
}
?>
El llamado el cual solo me muestra los resultado del primer Select y quisiera saber que estoy haciendo mal. He tratado de ubicar el return luego de la sentencia mysqli_next y nada :/. Agradezco de antemano ayuda. He posteado ya varias veces y no consigo una exacta solución u.u

Etiquetas: múltiple, mysql, select, sql, variables
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 23:11.