Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/07/2013, 19:38
Avatar de AnGuisi
AnGuisi
 
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 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