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;