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:
Software: Sistema Operativo
Licencia: Si
Fabricante: Microsoft
Version: Windows 8
Observaciones: Crackeado
Hardware:
Marca:
Modelo:
Serial:
Observaciones:
Software: Hoja de Cálculo
Licencia: No
Fabricante: Microsoft
Version: 2013
Observaciones: Office Excell
Hardware:
Marca:
Modelo:
Serial:
Observaciones:
Software:
Licencia:
Fabricante:
Version:
Observaciones:
Hardware: Disco Duro
Marca: Toshiba
Modelo: 0-50
Serial: 123
Observaciones: 350 GB
Software:
Licencia:
Fabricante:
Version:
Observaciones:
Hardware: Memoria
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