如何显示一个图像而不是四个图像

时间:2014-04-10 20:44:39

标签: php mysqli while-loop

在Mysql数据库中,我有列名“product_id”,并且有一个while语句代码来检查行是否存在...

如果product_id的值存在,那么它将显示“note-icon.png”图像,如果没有退出则会显示“否”,但问题是,假设在“product_id”中有四个product_id的相同编号,然后结果将显示四个图像,我的问题是如何编写代码来显示一个图像而不是四个图像!

            <?php 
            $sql = new mysqli($mysql_hostname, $mysql_user, $mysql_password, $mysql_database);
            $query = "SELECT * FROM notes WHERE product_id = $product_id";
            $results = mysqli_query($sql, $query);
            while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)){
           if(isset($row['$product_id'])) {
            echo "<p>No </p>";
            } else {
            echo '<img src="images/note-icon.png" width="16" height="16" />';
            } }
            ?>

2 个答案:

答案 0 :(得分:3)

只选择一行:

MySQL

SELECT * FROM notes WHERE product_id = ? LIMIT 1  

SQL

SELECT FIRST 1 * FROM notes WHERE product_id = ?

如果您想获得所有笔记但每个产品绘制一张图片,您可以这样做:

$product_ids = array();
while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)){
  if(!isset($row['product_id'])) {
    echo "<p>No </p>";
  } else {
    if(!isset($product_ids[$row['product_id']])) {
      $product_ids[$row['product_id']] = 1;
      echo '<img src="images/note-icon.png" width="16" height="16" />';
    }
  } 
}

一些代码注释:
   在您的查询中允许$product_id,只有在您之前将其强制转换为int 否则使用占位符(准备好的陈述)

if(isset($row['$product_id']))

这是什么?认为应该是:

if(!isset($row['product_id']))

您在使用之前忘记检查$results,它不是false ..

答案 1 :(得分:0)

你可以使用分组

SELECT * FROM notes WHERE product_id = ? GROUP BY product_id