2016-05-23 60 views
0

我想让这个查询循环,而表中的ProductO_Prioridad = 1列中的值Natan_Procesos。所以,我非常需要下面的所有代码来循环。试图循环查询输出​​到表

<div align="center"> 
<div align="center" style="width: -600; -moz-box-align: center; alignment-adjust: central; alignment-baseline: central; vertical-align: central; z-index: auto;"><p>&nbsp;</p> 
<p> Opciones de <? echo $rows['giro2']; ?></p> 
<?php 

try { 
     $sth = $db->prepare("SELECT Proveedor_Logo, Giro2_ID, Producto_Nombre, Producto_Descripcion, Producto_Precio, Producto_Imagen, Producto_Prioridad FROM Natan_Procesos WHERE Producto_Prioridad = 1"); 
     $sth->execute(array($ead,$eac)); 
     $row = $sth->fetch(PDO::FETCH_ASSOC); 
     $Proveedor_Logo = $row['Proveedor_Logo']; 
     $Giro2_ID = $row['Giro2_ID']; 
     $Producto_Nombre = $row['Producto_Nombre']; 
     $Producto_Descripcion = $row['Producto_Descripcion']; 
     $Producto_Precio = $row['Producto_Precio']; 
     $Producto_Imagen = $row['Producto_Imagen']; 
     $Producto_Prioridad = $row['Producto_Prioridad']; 
     } catch (PDOException $e) { 
     echo 'Database operation failed: ' . $e->getMessage(); 
    } 
?>  </div></div> 
<div align="center"> 
<div align="center" style="width: -600; -moz-box-align: center; alignment-adjust: central; alignment-baseline: central; vertical-align: central; z-index: auto;"> 
<table width="800" border="0"> 
    <tr> 
    <td><input name="platofuerte" type="radio" value="" /></td> 
    <td width="250"><? echo "<img src='". htmlspecialchars($row['Proveedor_Logo'])."' alt='image' />" ?></td> 
    <td><? echo $row['Proveedor_Nombre_Comercial']; ?>&nbsp;</td> 
    <td><? echo "<img src='". htmlspecialchars($row['Producto_Imagen'])."' alt='image' />" ?>&nbsp;</td> 
    <td width="100"><? echo $row['Producto_Nombre']; ?>&nbsp;</td> 
    <td width="200"><? echo $row['Producto_Descripcion']; ?>&nbsp;</td> 
    <td width="10">$<? echo $row['Producto_Precio']; ?>&nbsp;</td> 
    </tr> 
</table> 
</div></div> 

到目前为止仅输出1行当有3行与从同一个表中列Producto_Prioridad值= 1。我如何实现while循环来显示满足条件的行数?

感谢您的帮助。

+0

纳坦,这里没有足够的信息来提供有效的问题。预期的转型是什么?什么是预期的输出?现在做什么,你不想要它? – Dykotomee

+0

这是因为你只输出1个结果,不是全部。 'fetch'一次只需要一行。如果要输出所有行,则必须循环查询的结果并获取每行。 – Michel

+0

或者使用'fetchAll()'。看看[在这个问题](http://stackoverflow.com/questions/18435317/pdo-return-all-rows) – Michel

回答

1

fetch只会从您的查询中获取单个结果。尝试将其封装在一个循环中以捕获所有数据,然后在输出期间迭代数据:

<div align="center"> 
    <div align="center" style="width: -600; -moz-box-align: center; alignment-adjust: central; alignment-baseline: central; vertical-align: central; z-index: auto;"> 
     <p>&nbsp;</p> 
     <p> Opciones de <? echo $rows['giro2']; ?></p> 
     <?php 

     $rows = array(); 
     try { 
      $sth = $db->prepare("SELECT Proveedor_Logo, Giro2_ID, Producto_Nombre, Producto_Descripcion, Producto_Precio, Producto_Imagen, Producto_Prioridad FROM Natan_Procesos WHERE Producto_Prioridad = 1"); 
      $sth->execute(array(
       $ead, 
       $eac 
      )); 
      while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { 
       $Proveedor_Logo = $row['Proveedor_Logo']; 
       $Giro2_ID = $row['Giro2_ID']; 
       $Producto_Nombre = $row['Producto_Nombre']; 
       $Producto_Descripcion = $row['Producto_Descripcion']; 
       $Producto_Precio = $row['Producto_Precio']; 
       $Producto_Imagen = $row['Producto_Imagen']; 
       $Producto_Prioridad = $row['Producto_Prioridad']; 
       $rows[] = $row; 
      } 
     } catch (PDOException $e) { 
      echo 'Database operation failed: ' . $e->getMessage(); 
     } 
     ?> 
    </div> 
</div> 
<div align="center"> 
    <div align="center" 
     style="width: -600; -moz-box-align: center; alignment-adjust: central; alignment-baseline: central; vertical-align: central; z-index: auto;"> 
     <table width="800" border="0"> 
      <?php 
      foreach ($rows as $row) { 
       ?> 
       <tr> 
        <td> 
         <input name="platofuerte" type="radio" value="" /> 
        </td> 
        <td width="250"> 
         <img src='<?php echo htmlspecialchars($row['Proveedor_Logo']); ?>' alt='image' /> 
        </td> 
        <td> 
         <? echo $row['Proveedor_Nombre_Comercial']; ?>&nbsp; 
        </td> 
        <td> 
         <img src='<?php echo htmlspecialchars($row['Producto_Imagen']); ?>' alt='image' />&nbsp; 
        </td> 
        <td width="100"> 
         <? echo $row['Producto_Nombre']; ?>&nbsp; 
        </td> 
        <td width="200"> 
         <? echo $row['Producto_Descripcion']; ?>&nbsp; 
        </td> 
        <td width="10"> 
         $<? echo $row['Producto_Precio']; ?>&nbsp; 
        </td> 
       </tr> 
       <?php 
      } 
      ?> 
     </table> 
    </div> 
</div> 
+0

这工作完美。谢谢。我有提取的想法,但无法得到循环。你的帮助非常令人满意。现在这也将提供没有值= 1的行并且不会出现错误? –

+0

是的,它应该。如果数组为空,使用'foreach'将会阻止任何迭代。如果你想测试它,在SQL查询的末尾添加AND 1 = 0,看看会发生什么! – Dykotomee