2011-02-16 26 views
11

मुझे mysqli का उपयोग करके वापस आने के लिए पंक्तियों की संख्या प्राप्त करने में परेशानी हो रही है। निश्चित रूप से कुछ परिणाम होने के बावजूद मुझे हर बार 0 बार वापस मिलता है।mysqli num_rows हमेशा 0 क्यों लौटाता है?

if($stmt = $mysqli->prepare("SELECT id, title, visible, parent_id FROM content WHERE parent_id = ? ORDER BY page_order ASC;")){ 
    $stmt->bind_param('s', $data->id); 
    $stmt->execute(); 
    $num_of_rows = $stmt->num_rows; 
    $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent); 

    while($stmt->fetch()){ 
     //code 
    } 

    echo($num_of_rows); 

    $stmt->close(); 
} 

क्यों यह सही संख्या प्रदर्शित नहीं करता है?

+0

क्या करता है $ stmt उत्पादन पर var_dump? – JamesHalsall

+0

print_r() रिटर्न: mysqli_stmt ऑब्जेक्ट ([प्रभावित_rows] => -1 [insert_id] => 0 [num_rows] => 0 [param_count] => 1 [field_count] => 4 [errno] => 0 [त्रुटि ] => [SQLSTATE] => 00000 [id] => 1) – ollie

+0

सुनिश्चित करें कि डेटा मौजूद ... – ajreal

उत्तर

22

आप कॉल करने के लिए MySqli_Stmt::store_result() पहले NUM_ROWS देखने की जरूरत है:

if($stmt = $mysqli->prepare("SELECT id, title, visible, parent_id FROM content WHERE parent_id = ? ORDER BY page_order ASC;")){ 
    $stmt->bind_param('s', $data->id); 
    $stmt->execute(); 
    $stmt->store_result(); <-- This needs to be called here! 
    $num_of_rows = $stmt->num_rows; 
    $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent); 

    while($stmt->fetch()){ 
     //code 
    } 

    echo($num_of_rows); 

    $stmt->close(); 
} 

the docs on MySQLi_Stmt->num_rows देखें, यह यह सही पेज (मुख्य विवरण ब्लॉक में) के शीर्ष के निकट कहते हैं ...

+0

मुझे लगता है कि याद किया जाना चाहिए! आपकी मदद के लिए बहुत बहुत धन्यवाद – ollie

+2

मुझे वह भी याद आया। यह PHP.net पर अधिकांश उदाहरणों में नहीं है। –

+0

मैं इसे आजमाने की कोशिश कर रहा हूं और इसे काम नहीं कर सकता। जस्टो कॉपी कोड, टेबल नाम और फ़ील्ड बदलें। कुछ भी तो नहीं। ऐसी बुनियादी सुविधा इतनी मुश्किल कैसे हो सकती है ???? – xzdead

-2

कोशिश की स्थापना अपने $num_of_rows सही अपने अगर (बयान) के बाद - अपने परिणामों bind_param से पहले ... बदल रहा जब तक कि है। अधिक जानकारी के बिना बताना मुश्किल है।

+0

उत्तर के लिए धन्यवाद - अभी भी 0 लौटाता है, हालांकि। आपको अन्य जानकारी की क्या आवश्यकता है? – ollie

+0

ऐसा लगता है कि आपकी क्वेरी में कुछ गड़बड़ है। 'की तरह है, तो एक सीधे क्वेरी कर प्रयास करें (क्वेरी $ stmt = $ mysqli-> (" सामग्री से चयन आईडी, शीर्षक, दृश्य, PARENT_ID कहां PARENT_ID = YOURIDHERE द्वारा page_order एएससी आदेश; ")) {' और देखते हैं कि अगर अब भी kickin है ' आउट 0 परिणाम – TNC

+0

if_rows को सही करने के बाद if() कुछ भी नहीं करेगा - क्वेरी अभी तक निष्पादित नहीं की गई है, इसलिए यह जानना असंभव है कि कितनी पंक्तियां लौटा दी गई हैं। –

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