繁体   English   中英

如何使用PHP错误显示MySql查询的多个结果

[英]How to display multiple result from MySql query using PHP error

我有一个项目类别的查询,在此示例中,我有2个来自智利的WINE。 我下面的代码可以正常工作,但是只有foreach循环或其任何形式,它将第一个输出与第二个输出重叠。

我是for-each循环的新手

这是我的PHP:

<?php  

include"db_connection.php";

$sql = mysql_query("SELECT * FROM WINE WHERE country='Chile'");

$allRows = array();
while($row = mysql_fetch_array($sql)) {
    $allRows[] = $row;
}       


foreach ($allRows as $row) {
            $id = $row ["id"];          
            $description = $row["description"];
            $wine_type = $row["wine_type"];
            $country = $row["country"];
            $bottle_price = $row["bottle_price"];
            $indicator = $row["indicator"];
            $colour = $row["colour"];
            $case_price = $row["case_price"];
            $case_size = $row["case_size"];      
            $date_added = strftime("%b %d, %Y", strtotime($row["date_added"]));

}


?>

这是HTML:

<?php include('header.php'); ?>
<div id="content">
<table width="100%" border="0" cellspacing="0" cellpadding="15">
<?php
foreach ($allRows as $row) {
?>
    <tr>
      <td width="19%" valign="top"><img src="inventory_images/<?php echo $row['id']; ?>.jpg" width="142" height="188" alt="<?php echo $row['wine_type']; ?>" /><br />
      <a href="inventory_images/<?php echo $id; ?>.jpg">View Full Size Image</a></td>
            <td width="81%" valign="top"><h3><?php echo $wine_type; ?></h3>
            <p><?php echo "$".$bottle_price; ?><br /><br />
                <?php echo "$country $indicator"; ?> <br /><br />
                <?php echo $description; ?> <br />
            </p>

              <form id="form1" name="form1" method="post" action="cart.php">
                <input type="hidden" name="pid" id="pid" value="<?php echo $id; ?>" />
                <input type="submit" name="button" id="button" value="Add to Shopping Cart" />
              </form>
            </td>
    </tr>
<?php
}
?>
</table>
</div>
<?php include('footer.php'); ?>

发生的情况是您在每个循环中都覆盖了$id等变量,因此仅最后一行的结果保存在该位置。

但是,您根本不需要这些变量,因为所有信息都保存在$allRows 就像您通过<?php echo $row['id']; ?>访问ID一样<?php echo $row['id']; ?> <?php echo $row['id']; ?>在你的HTML,你应该与所有其他变量做。 例如: $row["bottle_price"]而不是$bottle_price

您的PHP代码如下所示:

<?php 
    include"db_connection.php";

    $sql = mysql_query("SELECT * FROM WINE WHERE country='Chile'");
    $allRows = array();

    while($row = mysql_fetch_array($sql)) {
        $allRows[] = $row;
    }
?>

您的HTML如下所示:

<?php include('header.php'); ?>
<div id="content">
<table width="100%" border="0" cellspacing="0" cellpadding="15">
<?php
    foreach ($allRows as $row) {
?>
    <tr>
        <td width="19%" valign="top">
            <img src="inventory_images/<?php echo $row['id']; ?>.jpg" width="142" height="188" alt="<?php echo $row['wine_type']; ?>" /><br />
            <a href="inventory_images/<?php echo $row['id']; ?>.jpg">View Full Size Image</a>
        </td>
        <td width="81%" valign="top">
            <h3><?php echo $row['wine_type']; ?></h3>
            <p><?php echo "$".$row['bottle_price']; ?><br /><br />
                <?php echo $row['country']." ".$row['indicator']; ?> <br /><br />
                <?php echo $row['description']']; ?> <br />
            </p>

            <form id="form1" name="form1" method="post" action="cart.php">
                <input type="hidden" name="pid" id="pid" value="<?php echo $row['id']; ?>" />
                <input type="submit" name="button" id="button" value="Add to Shopping Cart" />
            </form>
        </td>
    </tr>
<?php
    }
?>
</table>
</div>
<?php include('footer.php'); ?>

从外观上看,您遍历了数组两次。 一次设置变量,然后一次显示它。 这里的问题是您在使用变量之前已经写完了它们。

foreach ($allRows as $row) {
        $id = $row ["id"];          
        $description = $row["description"];
        $wine_type = $row["wine_type"];
        $country = $row["country"];
        $bottle_price = $row["bottle_price"];
        $indicator = $row["indicator"];
        $colour = $row["colour"];
        $case_price = $row["case_price"];
        $case_size = $row["case_size"];      
        $date_added = strftime("%b %d, %Y", strtotime($row["date_added"]));

?>

<tr>
  <td width="19%" valign="top"><img src="inventory_images/<?php echo $row['id']; ?>.jpg" width="142" height="188" alt="<?php echo $row['wine_type']; ?>" /><br />
  <a href="inventory_images/<?php echo $id; ?>.jpg">View Full Size Image</a></td>
        <td width="81%" valign="top"><h3><?php echo $wine_type; ?></h3>
        <p><?php echo "$".$bottle_price; ?><br /><br />
            <?php echo "$country $indicator"; ?> <br /><br />
            <?php echo $description; ?> <br />
        </p>

          <form id="form1" name="form1" method="post" action="cart.php">
            <input type="hidden" name="pid" id="pid" value="<?php echo $id; ?>" />
            <input type="submit" name="button" id="button" value="Add to Shopping Cart" />
          </form>
        </td>
</tr>
?><?php
}
?>

您需要设置变量并在相同的foreach()中使用它们。

另外,由于mysql_query不安全并且自PHP 5.5.0起已弃用,因此向PDO过渡可能是明智的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM