Php 为什么只显示mysql数据库的第一行

Php 为什么只显示mysql数据库的第一行,php,mysql,echo,Php,Mysql,Echo,我有一个分页,它有30多条记录,在表名产品下非常有效。我还在同一数据库下创建了另一个表名注释,该注释允许我阅读每个产品的注释 现在我正在尝试在分页中添加新的列特性,以检查是否有任何记录已经存在于使用product_id号的note表中 <?php $sql = new mysqli($mysql_hostname, $mysql_user, $mysql_password, $mysql_database); $query = "SELECT product_id FROM notes

我有一个分页,它有30多条记录,在表名产品下非常有效。我还在同一数据库下创建了另一个表名注释,该注释允许我阅读每个产品的注释

现在我正在尝试在分页中添加新的列特性,以检查是否有任何记录已经存在于使用product_id号的note表中

<?php 
$sql = new mysqli($mysql_hostname, $mysql_user, $mysql_password, 
$mysql_database);
$query = "SELECT product_id FROM notes WHERE product_id = $product_id";
$result = mysqli_query($sql, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    if(isset($row['$product_id'])) {
    echo "<p>No note </p>";
    } else {
    echo "<p>have note </p>";
    } 
?>
我的问题是,in note表有3条记录,当我运行分页时,只显示未退出任何note的第一行。。。只有一条记录而不是全部记录30条记录。。我没有在WHERE语句中设置限制1

我的问题是,如果产品id号是否退出,我如何编写php代码来允许所有记录(无论是否有注释)显示在每个记录列中无注释或有注释


非常感谢您的帮助。

您需要循环查看结果

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
    // do something
}

检查isset$row['product\U id']是没有意义的-如果它不等于$product\U id,那么查询将不会返回该行。

您需要遍历mysqli\u fetch\u数组。试试这个

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
          if(isset($row['$product_id'])) {
                  echo "<p>No note </p>";
          } else {
                  echo "<p>have note </p>";
          } 
}
mysqli_fetch_数组每行返回一个数组,并要求您循环调用以处理每个结果。另外,要从数组中调用元素,需要$row['product\U id']而不是$row['product\U id']


产品注释表中的所有三条记录都有问题吗?我已经尝试了上述代码,但我仍然显示第一行的一条记录,这不起作用,我需要的是显示所有记录,而不是一条记录。。。还有别的主意吗!我试过lasAnders,但仍然不起作用,仍然得到一个结果而不是全部结果。无论是否存在,我都希望显示全部。您确定有三条记录的product\u id字段等于您正在搜索的$product\u id吗?如果您希望显示全部,无论是否存在匹配项,则可以将SQL查询更改为:$query=从notes中选择product\u id;
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){

     if(isset($row['product_id'])) {
         echo "<p>No note </p>";
     } else {
         echo "<p>have note </p>";
     } 
}
$query = "SELECT product_id FROM notes";