2010-03-30 15 views
30

Próbuję zintegrować HTML Purifier http://htmlpurifier.org/, aby odfiltrować moje dane przesłane przez użytkownika, ale otrzymuję następujący błąd poniżej. I zastanawiałem się, jak mogę rozwiązać ten problem?PHP i MySQL: mysqli_num_rows() oczekuje, że parametr 1 będzie mysqli_result, boolean podany

Otrzymuję następujący błąd.

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

linia 22 jest.

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

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

} 
+2

Jestem pewien, że z podanych odpowiedzi wynika, że ​​ten błąd nie ma nic wspólnego z htmlpurifier. Zamierzam usunąć ten tag z Twojego pytania i zaktualizować tytuł pytania, aby to odzwierciedlić. –

Odpowiedz

29

$dbc zwraca false. Twoje zapytanie zawiera błąd:

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

Naprawiono to w sposób ogólny przez Raveren.

+0

Wyrażenie "Twoje zapytanie zawiera błąd" wykonało zadanie dla mnie. Dzięki! –

27

Zapytanie albo nie przyniosło rzędy czy erroneus, co FALSE jest zwracany. Zmień go

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

mysqli_num_rows:

Zwracane wartości

Zwraca TRUE w przypadku powodzenia, FALSE w awarii. W przypadku SELECT, SHOW, DESCRIBE lub EXPLAIN mysqli_query() zwróci obiekt wynikowy .

+0

Jeśli nie zostaną zwrócone żadne wiersze, zapytanie zakończy się pomyślnie (0 rekordów nie spowoduje, że mysqli_query lub mysqli_num_rows zwrócą fałsz). –

Powiązane problemy