2011-02-16 32 views
11

Mysqli kullanarak dönmek için satır sayısını almada sorun yaşıyorum. Kesinlikle bazı sonuçlar olsa bile, her seferinde 0'ı geri alırım.Neden mysqli num_rows her zaman 0 döndürüyor?

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

Doğru numara neden gösterilmiyor?

+0

... sağ (ana açıklama bloğunda) sayfanın üst kısmına yakın diyor $ stmt üzerinde bir var_dump üretir? – JamesHalsall

+0

print_r() şunu döndürür: mysqli_stmt Nesne ([etkilenen_sayfa] => -1 [insert_id] => 0 [sayı_sayısı] => 0 [param_count] => 1 [alan_sayısı] => 4 [errno] => 0 [hata ] => [sqlstate] => 00000 [id] => 1) – ollie

+0

Verilerin mevcut olduğundan emin olun ... – ajreal

cevap

22

Sen MySqli_Stmt::store_result() önce num_rows arama aramak gerekir:

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 Bkz Ne yapar

+0

Bunu kaçırmış olmalıyım! Yardımınız için çok teşekkürler – ollie

+2

Ben de bunu özledim. PHP.net'deki örneklerin çoğunda değildir. –

+0

Bunu deneyen bir saat gibi çalıştım ve işe yaramayacağım. Justo kodu kopyaladı, tablo adını ve alanlarını değiştirdi. Hiçbir şey değil. Böyle basit bir özellik nasıl zor olabilir ???? – xzdead

-2

$num_of_rows ayarını, if (statement) öğesinden hemen sonra ayarlamaya çalışın - bind_param'dan önce ... Bu, sonuçlarınızı değiştirmediği sürece. Daha fazla bilgi vermeden söylemek zor.

+0

Cevabınız için teşekkürler - yine de 0 değerini döndürür. Başka hangi bilgiye ihtiyacınız var? – ollie

+0

Sorunuzda yanlış bir şey var gibi görünüyor. '($ Stmt = $ mysqli-> sorgusu ("SELECT id, title, visible, parent_id FROM content WHERE parent_id = SAYISAL SİPARİŞ BY page_order ASC;")) gibi bir düz sorgu yapmayı deneyin. out 0 results – TNC

+0

if() bir şey yapmazsa hemen num_rows yapmak - sorgu henüz yürütülmemiştir, bu yüzden kaç satırın döndüğünü bilmek imkansızdır. –

İlgili konular