PHP & MySQL: mysqli_num_rows() verwacht dat parameter 1 mysqli_result is, boolean gegeven

Ik probeer HTML Purifier http://htmlpurifier.org/te integreren om mijn door gebruikers ingediende gegevens te filteren, maar Ik krijg de volgende fout hieronder. En ik vroeg me af hoe ik dit probleem kan oplossen?

Ik krijg de volgende foutmelding.

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

regel 22 is.

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

Hier is de php-code.

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

Antwoord 1, Autoriteit 100%

$dbcretourneert false. Uw zoekopdracht heeft er een fout opgetreden:

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

De oplossing hiervoor is in het algemeen beschreven door Raveren.


Antwoord 2, Autoriteit 91%

De query heeft geen rijen geretourneerd of is erroneeus, dus FALSEwordt geretourneerd. Verander het op

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

mysqli_num_rows:

Return-waarden

retourneert true op succes of onwaar
mislukking. Voor selecte, show, beschrijf of
Verklaren MySQLI_QUERY () zal een
Resultaatobject.

Other episodes