【问题标题】:show multiple products foreach row in mysql php在mysql php中显示多个产品foreach行
【发布时间】:2016-01-21 04:56:15
【问题描述】:

我正在通过从数据库中获取数据来制作 php 中的最新产品列表。我想从我的数据库中回显 18 种最新产品。我为每个项目都有外部 html,它将为所有具有不同数据的产品回显。以下是获取最新产品的查询

$query = mysql_query("SELECT * FROM devices ORDER BY id DESC LIMIT 3") or die(mysql_error());
while($row=mysql_fetch_array($query))

这里是html:

<div class="col-xs-6 col-sm-4 col-md-3 col-lg-2 nopadding">  

            <div class="device_box">                        


                <a title="'.$row['name'].'" href="'.$row['link'].'"><img class="img-responsive" alt="'.$row['name'].'" title="'.$row['name'].'" src="'.$row['img'].'" /></a>


                <span>

                <a title="'.$row['name'].'" href="'.$row['link'].'">'.$row['name'].'</a>

                <br /><div class="price_small">'.$row['price'].'</div>
                </span>

            </div>              

        </div>

我想使用 foreach 循环回显 18 个产品。我尝试使用 foreach 但它显示错误。

Warning: Invalid argument supplied for foreach() 

我们将不胜感激。谢谢。

【问题讨论】:

  • foreach 循环代码在哪里?
  • 我不知道如何为每个产品制作循环。 $data[]=$row; foreach($query as $data) if (!empty($data)){ $id = $data["id"]; $name = $data["name"];
  • 您应用了限制 3,并且您想展示 18 个产品。 ???????

标签: php mysql foreach


【解决方案1】:

试试这个

$sql = "sql query";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_row($result)) {
  echo '<div class="col-xs-6 col-sm-4 col-md-3 col-lg-2 nopadding">
        <div class="device_box">
            <a title="'.$row['name'].'" href="'.$row['link'].'"><img class="img-responsive" alt="'.$row['name'].'" title="'.$row['name'].'" src="'.$row['img'].'" /></a>
            <span>
            <a title="'.$row['name'].'" href="'.$row['link'].'">'.$row['name'].'</a>
            <br /><div class="price_small">'.$row['price'].'</div>
            </span>
        </div>
    </div>';
}

【讨论】:

  • 所有值都显示错误:注意:未定义索引:名称在
  • 确保您的 sql 查询选择名称、链接、img、价格......您必须正确查询我的代码是正确的
【解决方案2】:

不要像这样将 $row 分配给 $data $data[] = $row.此外,while 循环可以解决您的问题,不要使用 foreach。使用这个:

 $query = mysql_query("SELECT * FROM devices ORDER BY id DESC LIMIT 3") or die(mysql_error());

    while($row=mysql_fetch_array($query)){ ?>

<div class="col-xs-6 col-sm-4 col-md-3 col-lg-2 nopadding">  

            <div class="device_box">                        


                <a title="<?php echo $row['name'] ?>" href="<?php echo $row['link'] ?>"><img class="img-responsive" alt="<?php echo $row['name'] ?>" title="<?php echo $row['name'] ?>" src="<?php echo $row['img'] ?>" /></a>


                <span>

                <a title="<?php echo $row['name'] ?>" href="<?php echo $row['link'] ?>"><?php echo $row['name'] ?></a>

                <br /><div class="price_small"><?php echo $row['price'] ?></div>
                </span>

            </div>              

        </div>


   <?php  } ?>

【讨论】:

  • 好。欢迎兄弟。 :)
【解决方案3】:

试试这个

    <? 
$sql = "YOUR QUERY HERE";
$result = mysql_query($conn, $sql);
//if (mysql_num_rows($result) > 0) {
// output data of each row
$data = array();
while($row = mysql_fetch_assoc($result)) {
    $data[] = $row;
}
foreach($data as $key=>$val) { ?>
  <div class="col-xs-6 col-sm-4 col-md-3 col-lg-2 nopadding">
        <div class="device_box">
            <a title="<?php echo $val['name']; ?>" href="<?php echo $val['link'];?>"><img class="img-responsive" alt="<?php echo $val['name'];?>" title="<?php echo $val['name'];?>" src="<?php echo $val['img'];?>" /></a>
            <span>
            <a title="<?php echo $val['name'];?>" href="<?php echo $val['link'];?>"><?php echo $val['name'];?></a>
            <br /><div class="price_small"><?php echo $val['price'];?></div>
            </span>
        </div>
    </div>';
<? } ?>

【讨论】:

  • 多个循环需要什么?还有你在哪里使用了$key?所以我认为 foreach 没用。
  • 这是因为 $data - 关联数组的可重用性。如果你想每次都这样做,你必须使用非常烦人的while循环,而不是这样做,你只需为你的数据结果创建一个关联数组,然后尝试任何你想要的。
  • 你是对的,但是如果我们实际上需要密钥,我们会使用 foreach,但在这种情况下,你没有在 foreach 中使用 $key。 While 循环可能会让您感到恼火,但它有很大帮助。我的解决方案也适用于用户。
  • 你没有听懂我在说什么。其实我这样做的重点是为对方重用查询的结果。再做同样的过程吗?你再次获取数据吗?例如mysql_fetch_array()???在这种情况下,如果您有 $data 作为结果数组,您可以轻松地将其他过程作为您上次查询的所有记录。 Ahhhhaaa ...如果你不让我离开它。照你自己的方式去做。每个开发人员都有自己编写代码的方式。
  • 是的,我明白你的意思。你的观点很好,但现在我们不确定用户使用查询数据的方法。毫无疑问,在可重用的情况下,您的解决方案效果很好。
猜你喜欢
  • 1970-01-01
  • 2017-06-13
  • 2018-01-22
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多