PHP 和 MySQL:mysqli_num_rows() 期望参数 1 是 mysqli_result,给出布尔值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2546314/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
提问by TaG
I'm trying to Integrate HTML Purifier http://htmlpurifier.org/to filter my user submitted data but I get the following error below. And I was wondering how can I fix this problem?
我正在尝试集成 HTML Purifier http://htmlpurifier.org/来过滤我的用户提交的数据,但出现以下错误。我想知道如何解决这个问题?
I get the following error.
我收到以下错误。
on line 22: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
line 22 is.
第 22 行是。
if (mysqli_num_rows($dbc) == 0) {
Here is the php code.
这是php代码。
if (isset($_POST['submitted'])) { // Handle the form.
require_once '../../htmlpurifier/library/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
$config->set('HTML.Doctype', 'XHTML 1.0 Strict'); // replace with your doctype
$purifier = new HTMLPurifier($config);
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT users.*, profile.*
FROM users
INNER JOIN contact_info ON contact_info.user_id = users.user_id
WHERE users.user_id=3");
$about_me = mysqli_real_escape_string($mysqli, $purifier->purify($_POST['about_me']));
$interests = mysqli_real_escape_string($mysqli, $purifier->purify($_POST['interests']));
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO profile (user_id, about_me, interests)
VALUES ('$user_id', '$about_me', '$interests')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE profile
SET about_me = '$about_me', interests = '$interests'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
if (!$dbc) {
// There was an error...do something about it here...
print mysqli_error($mysqli);
return;
}
}
采纳答案by Sean Vieira
$dbcis returning false. Your query has an error in it:
$dbc返回假。您的查询中有错误:
SELECT users.*, profile.* --You do not join with profile anywhere.
FROM users
INNER JOIN contact_info
ON contact_info.user_id = users.user_id
WHERE users.user_id=3");
The fix for this in general has been described by Raveren.
Raveren 已经描述了对此的一般修复。
回答by raveren
The query either returned no rows or is erroneus, thus FALSEis returned. Change it to
查询要么没有返回任何行,要么是错误的,因此FALSE被返回。将其更改为
if (!$dbc || mysqli_num_rows($dbc) == 0)
mysqli_num_rows:
mysqli_num_rows:
Return Values
Returns TRUE on success or FALSE on failure. For SELECT, SHOW, DESCRIBE or EXPLAIN mysqli_query() will return a result object.
返回值
成功时返回 TRUE,失败时返回 FALSE。对于 SELECT、SHOW、DESCRIBE 或 EXPLAIN mysqli_query() 将返回一个结果对象。

