php - 如何使用 PHP 显示来自 MySql 查询的多个结果

标签 php html mysql

我当前的代码运行良好,但是当我希望代码显示名为 wine 的表中存在的查询时,我需要帮助...例如,如果类别中的 wine 类型超过西类牙,那么它应该显示所有但它只显示一个。

这是我的 PHP:

<?php  

include"db_connection.php";

$sql = mysql_query("SELECT * FROM WINE WHERE country='Chile'");
    while($row = mysql_fetch_array($sql)){ 
         $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">
    <tr>
        <td width="19%" valign="top"><img src="inventory_images/<?php echo $id; ?>.jpg" width="142" height="188" alt="<?php echo $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>
</table>
</div>

<?php include('footer.php'); ?>

最佳答案

目前的问题是 while() 循环将继续覆盖变量。这可以通过多种方式解决,一种是将获取的整个列保存在一个数组中,稍后使用该数组进行迭代。

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

现在,如上所述,遍历模板中的 $allRows

<?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 />
      etc.
    </tr>
<?php
}
?>
</table>
</div>
<?php include('footer.php'); ?>

在这里,我将变量作为 $row['...'] - 如果您不想更改那部分代码,只需在循环开始时进行分配.

etc.
<?php
foreach ($allRows as $row) {
     $description = $row["description"];
     $wine_type = $row["wine_type"];
     //etc.
?>

一个更简洁的解决方案(不要混合那么多通常会​​造成很多困惑的 HTML 和 PHP)是使用模板引擎。也不要在新代码中使用 mysql_* 函数 - 它们是 deprecated .参见 this answer获取更多信息。

关于php - 如何使用 PHP 显示来自 MySql 查询的多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22313078/

相关文章:

javascript - PHP POST 变量值

html - div 中的 CSS 垂直对齐按钮不起作用

python - CubesViewer 服务器并不总是加载多维数据集

mysql - 数据库表,越多越好?

mysql - 获取 id 数

javascript - 每次点击时显示所选选项的值

php - 服务器错误 - HTTP 500(内部服务器错误)仅在访问这一 PHP 页面时

php - Woocommerce `update_post_meta` 未更新数据库值

javascript - 如何在弹出窗口而不是内部 html 中显示消息

jquery - 删除类 - 无法定位正确的类