【问题标题】:trying to loop query that outputs to a table试图循环输出到表的查询
【发布时间】:2016-05-23 11:09:28
【问题描述】:

我正在尝试在 Natan_Procesos 表中 Producto_Prioridad 列中的值 = 1 时进行此查询循环。所以,我几乎需要下面的所有代码来循环。

<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>

到目前为止,当同一个表的 Producto_Prioridad 列中有 3 行值为 =1 时,它只输出 1 行。如何实现 while 循环以显示满足条件的行数?

感谢您的帮助。

【问题讨论】:

  • Natan,这里没有足够的信息来提供有效的问题。预期的转变是什么?什么是预期的输出?你不希望它现在在做什么?
  • 这是因为您只输出了 1 个结果,而不是全部。 fetch 一次占用 1 行。如果要输出所有行,则必须循环查询结果并获取每一行。
  • 或使用fetchAll()。看看at this question
  • 我相信这个问题是基于行的限制而不是所有的匹配条件?我想知道如何使用 fetchall() 显示数据,并在下面立即填写表格?

标签: php mysql while-loop


【解决方案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>

【讨论】:

  • 这非常有效。谢谢。我有 fetch 的想法,但无法让循环继续。非常感谢您的帮助。现在这也将提供没有值 =1 的行并且不会出错?
  • 是的,应该。如果数组为空,使用foreach 将阻止任何迭代。如果您想对其进行测试,请将“AND 1=0”添加到 SQL 查询的末尾,看看会发生什么!
猜你喜欢
  • 2020-04-15
  • 2017-07-19
  • 2016-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多