2016-12-31 51 views
-2

我试图获取包含空或空字段的行数,以便如果这个行数大于或等于1,用户会收到提醒,告诉他们完成这些记录,但是我收到了标题中提到的错误。SQL PHP错误:mysqli_num_rows()期望参数1为mysqli_result,布尔给定

代码:

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

} 

任何帮助将不胜感激。

+0

这个错误通常意味着有一个与SQL查询 –

回答

1

这是因为$conn->query($sql);返回FALSE。您的电话$conn->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->query($sql);调用中。

+0

我已经对代码和架构,以及表和列绝对存在的问题,有没有错别字。也许这与查询的IS NULL部分有关? – sinesine

+0

更新了我的答案。现在查询是正确的,并在$ conn-> query()后面添加mysqli_error来解析错误。 – user3606329

+0

我完全复制了上面的查询,它仍然无法工作。我添加了'或者死(mysqli_error($ conn));'并且它产生了:'where子句'中的未知列'pilot_initial_post'。 – sinesine

1

由于查询失败,它返回false。

尝试:

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

谢谢,但这没有奏效。 – sinesine

+0

请以您希望捕获的行为例来捕捉数据库结构的图片。 –

+0

我不知道如何做到这一点在PHPMyAdmin,但我敢肯定,这不是数据库是这里的问题,因为我有几乎相同的功能,正在工作,但不包括IS NULL在他们的查询,导致我相信这是问题所在。 – sinesine

相关问题