Php 调用<;中布尔值上的成员函数fetch_assoc();路径>;

Php 调用<;中布尔值上的成员函数fetch_assoc();路径>;,php,mysqli,Php,Mysqli,当运行下面的代码来显示从数据库进行的预订时,我遇到了上面的错误 <?php $servername = "localhost"; $username = "*********"; $password = "********"; $dbname = "thelibr1_fyp"; // Create connec

当运行下面的代码来显示从数据库进行的预订时,我遇到了上面的错误

<?php
        
        $servername = "localhost";
        $username = "*********";
        $password = "********";
        $dbname = "thelibr1_fyp";


        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        
        $sql = "SELECT id, tablename, numseats, person FROM confirms";
        $result = $conn->query($sql);
        ?>
                        
        <table id="Confirms" border ="2" style="length:900px;width:350px;">
              <thead>
                <tr style= "background-color: #A4A4A4;">
                  <td>Booking ID:</td>
                  <td>Table No.:</td>
                  <td>No. of Seats:</td>
                  <td>Person:</td>
                </tr>
              </thead>
            <tbody>
                <?php
                  while(($row = $result->fetch_assoc()) !== null){
                    echo
                    "<tr>
                      <td>{$row['id']}</td>
                      <td>{$row['tablename']}</td>
                      <td>{$row['numseats']}</td>
                      <td>{$row['person']}</td>
                    </tr>\n";
                  }
                ?>
            </tbody>
        </table>

预订编号:
表号:
座位数目:
人:

请使用while循环的if条件并重试

例如

如果出现错误,查询方法可以返回
false
,而不是结果集。这就是为什么在fetch_assoc方法调用中出现错误的原因,当$result为
false时,该错误显然不存在

这意味着您的SELECT语句中有一个错误。要显示该错误,请执行以下操作:

 $result = $conn->query($sql) or die($conn->error);

很可能是表名或列名的拼写错误。可能在移动到主机时,您没有正确创建该表,并且在那里犯了拼写错误

事实上,当通过phpAdmin执行相同的查询时,您应该会看到相同的错误

此外,请更换该行:

while(($row = $result->fetch_assoc()) !== null){
只要:

while($row = $result->fetch_assoc()) {
您还可以添加以下内容进行调试:

echo "number of rows: " . $result->num_rows;

您必须在主机提供商的服务器上用更新php.ini配置文件,请相信我,您的代码很可能没有问题。我花了将近一个半月的时间才意识到,大多数托管服务器在php.ini文件(如php 5.5或更高版本)上都不是最新的。

当查询中的表不存在时,通常会发生此错误。只要在查询中检查表的拼写,它就会工作。

好的,我刚刚修复了这个错误

当查询中存在错误或表不存在时,就会发生这种情况


尝试调试直接在phpmyadmin上运行的查询,以确认mysql查询的有效性

是的,也尝试了同样的问题。我尝试了你的代码,它对我有用,检查你的数据库和查询?在$result=$conn->query($sql)之后你得到了什么输出;打印(结果);看起来您的查询失败了,查询调用返回了一个布尔值FALSE;打印(结果);我没有输出。当你说检查你的数据库时,你想检查什么?我的意思是我有其他的功能问题,所以它很可能是数据库,但它可能是什么?我遇到的所有这些函数在使用XamppI treid在本地托管时都能正常工作。根据您的建议,现在可以删除错误,但不会输出任何输出,它们肯定是要输出的数据库中的条目。好的,这有助于我链接到错误的数据库名称,修正了这个问题,但是仍然没有输出。“or die($conn->error)”现在什么也不返回,但我不明白为什么没有显示任何条目。当您直接在phpAdmin中运行SELECT时,输出是什么(确保您在正确的服务器上)?这意味着您的SELECT语句中有错误。这救了我的命。“很可能你的表名或列名拼写错误。”谢谢
echo "number of rows: " . $result->num_rows;