2010-03-30 9 views
30

दिया गया है, मैं अपने उपयोगकर्ता द्वारा सबमिट किए गए डेटा को फ़िल्टर करने के लिए एचटीएमएल शोधक http://htmlpurifier.org/ को एकीकृत करने की कोशिश कर रहा हूं लेकिन मुझे नीचे दी गई त्रुटि मिलती है। और मैं सोच रहा था कि मैं इस समस्या को कैसे ठीक कर सकता हूं?PHP और MySQL: mysqli_num_rows() पैरामीटर 1 को mysqli_result होने की अपेक्षा करता है, बूलियन

मुझे निम्न त्रुटि मिलती है।

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

} 
+2

जैसा कि मुझे यकीन है कि आप दिए गए उत्तरों से देखेंगे, इस त्रुटि में htmlpurifier के साथ कुछ लेना देना नहीं है। मैं आपके प्रश्न से उस टैग को हटाने जा रहा हूं और इसे प्रतिबिंबित करने के लिए प्रश्न शीर्षक अपडेट कर रहा हूं। –

उत्तर

29

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

सामान्य रूप से इसके लिए फिक्स रेवेरेन द्वारा वर्णित किया गया है।

+0

वाक्यांश "आपकी क्वेरी में एक त्रुटि है" मेरे लिए नौकरी की थी। धन्यवाद! –

27

क्वेरी या तो कोई भी पंक्ति लौट आए या इस प्रकार FALSE दिया जाता है, erroneus है। यह

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

mysqli_num_rows में बदलें:

वापसी

रिटर्न सफलता पर TRUE या विफलता पर गलत मान। चयन, शो, डिस्क्रिब या EXPLAIN mysqli_query() के लिए परिणाम ऑब्जेक्ट लौटाएगा।

+0

यदि कोई पंक्तियां वापस नहीं आती हैं, तो क्वेरी सफल होगी (0 रिकॉर्ड mysqli_query या mysqli_num_rows झूठी वापसी नहीं करेंगे)। –

संबंधित मुद्दे