¿Por que un ciclo while no muestra datos existentes al utilizarse en PHP 5.3.0? – php mysqli

Pregunta:


Tengo un ciclo while para mostrar una lista de datos usando el siguiente codigo:

 <?php
    $stmt = $conexion->prepare("SELECT desc_unix ,cos_unix FROM unidadesx");
    $stmt->execute();
    $resultados = $stmt->get_result();
    $contador = 0;

    while ($datos = $resultados->fetch_assoc())
      {
      $contador = $contador + 1;
      echo '<td bordercolor="#FFFFFF" align="center" width="112">' . $contador . '</td>';
      echo '<td bordercolor="#FFFFFF" align="center" width="192">' . $datos["cos_unix"] . '</td>';
      echo '<td bordercolor="#FFFFFF" align="center" width="596">' . $datos["desc_unix"] . '</td>';
      echo "</tr>";
      }

    $stmt->close();
    ?>

Este funciona bien en PHP 5.4.0. Al pasarlo a PHP 5.3.0 no muestra nada.

  • Lo primero que hice fue testear el valor de $resultados, ya que hasta donde estaba esta sentencia se mostraba el HTML, tuve que cambiar de get_result(); a store_result(); para que mostrara todo el ocumento.

  • Lo segundo fue que generaba las columnas pero no los datos crei que el problema estaba en el fetch_assoc() y lo cambie por mysql_fetch_array.

  • Ahora muestra todo el contenido HTML pero no los datos, es decir, sale columna 1, 2 ,3 pero vacias.

Aqui el codigo final:

<?php
$stmt = $conexion->prepare("SELECT desc_unix ,cos_unix FROM unidadesx");
$stmt->execute();
$resultados = $stmt->store_result();
$contador = 0;

while ($datos = mysqli_fetch_array($resultados,MYSQL_ASSOC))
  {
  $contador = $contador + 1;
  echo '<td bordercolor="#FFFFFF" align="center" width="112">' . $contador . '</td>';
  echo '<td bordercolor="#FFFFFF" align="center" width="192">' . $datos["cos_unix"]. '</td>';
  echo '<td bordercolor="#FFFFFF" align="center" width="596">' . $datos["desc_unix"]. '</td>';
  echo "</tr>";
  }

$stmt->close();
?>

Como puedo hacer que este ciclo funcione en PHP 5.3?

Preguntado por: Victor Alvarado

Por que no utilizar como en la documentación señala :

$sql = "SELECT desc_unix ,cos_unix FROM unidadesx";
$contador = 0;
foreach ($conexion->query($sql) as $row) {
    $contador = $contador + 1;
    echo '<td bordercolor="#FFFFFF" align="center" width="112">' . $contador . '</td>';
    echo '<td bordercolor="#FFFFFF" align="center" width="192">' . $row["cos_unix"]. '</td>';
    echo '<td bordercolor="#FFFFFF" align="center" width="596">' . $row["desc_unix"]. '</td>';
    echo "</tr>";
}

Fuente

Tags:,

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *