从mysql数据库中取出后,为什么数据不会打印在网页上?

时间:2017-07-13 18:02:01

标签: php mysql

$retval = mysqli_query($conn,"SELECT * FROM food WHERE pnrno='$pnrno'");
if ($retval) {
    echo "Your food complain has been successfully fetched";
    echo "<table border='1'>
        <tr>
        <th>Username</th>
        <th>PNR Number</th>
        <th>Food Complain Status</th>
        </tr>";

        while($row = mysqli_fetch_array($retval))
        {
        echo "<tr>";
        echo "<td>" . $row['username'] . "</td>";
        echo "<td>" . $row['pnrno'] . "</td>";
        echo "<td>" . $row['complain_status'] . "</td>";
        echo "</tr>";
        }
        echo "</table>";
        echo "\r\n";
} else {
    echo "Error: " . $retval . "<br>" . mysqli_error($conn);
}

while循环中的代码没有被执行(我想是这样),“你的食物抱怨已成功获取”这条消息正在打印,表格已经形成,但是从数据库中取出后的用户名,pnrno和complain_status是没有打印在网页上。为什么会这样,请帮助。

2 个答案:

答案 0 :(得分:3)

假设数据存在,并且您正在向查询发送正确的参数,可能的罪魁祸首就是您使用row变量的方式。因为你没有告诉mysqli以关联方式获取数组,所以它默认为索引。

您需要将获取功能更改为:

mysqli_fetch_array($retval, MYSQLI_ASSOC)

答案 1 :(得分:0)

$retval = mysqli_query($conn,"SELECT * FROM food WHERE pnrno='$pnrno'");

if ($retval) {

如果查询成功执行,您的if将会执行。

但是,对不存在的行的查询将成功,行数为零。

您需要检查查询返回的行数,如果没有匹配的行,则显示错误。