【问题标题】:SQL PHP Error: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [duplicate]SQL PHP 错误:mysqli_num_rows() 期望参数 1 为 mysqli_result,给定布尔值 [重复]
【发布时间】:2017-05-15 06:58:50
【问题描述】:

我正在尝试获取包含 null 或空字段的行数,以便如果此行数大于或等于 1,则会提示用户完成这些记录(s ),但是我得到了标题中提到的错误。

代码:

function incompleteTechLog() {
    
include 'config.php';

// Connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM tbl_flights WHERE pilot_initial_post IS NULL OR = '' AND is_deleted = '0'"; // program allows for soft deleting so this must be included in the query
$result = $conn->query($sql);
$rows = mysqli_num_rows($result);

if ($rows >= 1) {
    echo "<div class='alert alert-warning' role='alert'><strong>Minor Alert! </strong>" . $rows . " tech log(s) are incomplete. Please check all aircraft tech logs.</div>";
} else {
    $conn = null;
}

} 

【问题讨论】:

  • 此错误通常表示 SQL 查询存在问题

标签: php mysql sql mysqli


【解决方案1】:

这是因为$conn-&gt;query($sql); 返回了FALSE。您的电话$conn-&gt;query($sql); 未成功。

你的语法有错误:

$sql = "SELECT * FROM tbl_flights WHERE pilot_initial_post IS NULL OR = '' AND is_deleted = '0'"; 

应该改为

$sql = "SELECT * FROM tbl_flights WHERE (pilot_initial_post IS NULL OR pilot_initial_post = '') AND is_deleted = '0'"; 

OR 运算符需要 field_name。

为了调试,将or die(mysqli_error($conn)); 添加到您的$conn-&gt;query($sql); 调用中。

【讨论】:

  • 我把代码和架构都看了一遍,表和列肯定存在,没有错别字。也许这与查询的 IS NULL 部分有关?
  • 更新了我的答案。现在查询是正确的,并在 $conn->query() 后面添加 mysqli_error 来解析错误。
  • 我完全复制了您上面的查询,但仍然无法正常工作。我添加了or die(mysqli_error($conn));,它产生了:'where 子句'中的未知列'pilot_initial_post'。
  • 这是因为您的表设计中不存在 Pilot_initial_post。如果您认为它存在,请仔细查看是否有错别字。
  • 我要看看我的数据库 SQL,也许从头开始用一个测试数据库,这显然是我的目标。您发布的查询显然有效,因此我将其标记为正确。感谢大家的帮助。
【解决方案2】:

因为查询失败,所以返回 false。

试试:

SELECT * FROM tbl_flights WHERE (pilot_initial_post IS NULL OR pilot_initial_post='') AND is_deleted='0'

【讨论】:

  • 谢谢,但这没有用。
  • 请拍一张数据库结构的照片,并附上您希望它捕获的行的示例。
  • 我不确定如何在 PHPMyAdmin 上执行此操作,但我确信这里的问题不是数据库,因为我有几乎相同的功能正在工作但没有在他们的查询中包含 IS NULL,让我相信这就是问题所在。
  • 我刚刚使用我发布的相同查询创建了一个测试数据库。我设置了两个字段进行检查,并输入了 3 行以从中提取。查询在我编写时工作正常。打开 phpmyadmin,浏览到您的表,然后点击结构选项卡,截屏/sn-p。然后单击浏览并显示您从中提取的数据的示例。
  • 那么问题绝对不是查询。如上所述,我将创建一个测试数据库/从头开始 SQL,看看我到底出了什么问题。感谢您的帮助。
猜你喜欢
  • 2018-11-06
  • 2011-02-02
  • 2023-02-12
  • 2014-02-27
  • 1970-01-01
  • 2012-07-06
  • 2013-07-17
  • 2013-11-08
相关资源
最近更新 更多