在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" />';
} }
?>
答案 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