PHP и MySQL: mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, boolean given

Я пытаюсь интегрировать очиститель HTML http://htmlpurifier.org/, чтобы отфильтровать мои пользовательские данные, но я получаю следующую ошибку ниже. И мне было интересно, как я могу исправить эту проблему?

Я получаю следующую ошибку.

on line 22: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given 

строка 22 есть.

 if (mysqli_num_rows($dbc) == 0) { 

Вот 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; } } 

Solutions Collecting From Web of "PHP и MySQL: mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, boolean given"

$dbc возвращает false. В вашем запросе есть ошибка:

 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"); 

Исправить это в целом было описано Raveren.

Запрос либо не возвращал строк, либо был ошибочным, поэтому возвращается FALSE . Измените его на

 if (!$dbc || mysqli_num_rows($dbc) == 0) 

mysqli_num_rows :

Возвращаемые значения

Возвращает TRUE при успешном завершении или FALSE при сбое. Для SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query () вернет объект результата.