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

时间:2014-04-10 16:00:06

标签: php mysql echo

我有一个有超过30条记录的分页,并且在表名和#34;产品"下工作得很好。我还创建了另一个表名"注意"在同一个数据库下,该说明允许我阅读每个产品的注释。

现在我尝试在分页中添加新的列功能,以检查"注意"中是否已存在任何记录。使用product_id编号的表。

<?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>";
    } 
?>

我遇到的问题是&#34;注意&#34; table有3条记录,当我运行分页时,只显示第一行没有退出任何音符...而且只有一条记录而不是所有记录(30条记录)..我没有把&#34;限制1 )在WHERE语句中......

我的问题是,如何编写php代码以允许我记录是否有记录,但是在每个记录列中显示&#34;没有记录&#34;或者&#34;有说明&#34;如果&#34; product_id&#34;号码退出与否!

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:2)

你需要遍历结果。

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

检查isset($row['product_id'])毫无意义 - 如果它不等于$product_id,则无论如何该查询都不会返回该行。

答案 1 :(得分:1)

mysqli_fetch_array每行返回一个数组,并要求您循环调用以使用每个结果。另外,要从数组中调用元素,您需要$row['product_id']而不是$row['$product_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>";
     } 
}

如果要显示数据库中的所有记录,无论product_id如何,都可以将查询更改为:

$query = "SELECT product_id FROM notes";

答案 2 :(得分:-1)

您需要遍历mysqli_fetch_array。试试这个

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
          if(isset($row['$product_id'])) {
                  echo "<p>No note </p>";
          } else {
                  echo "<p>have note </p>";
          } 
}