mysqli_statement :: num_rows () yanlış değerini döndürür

3 Cevap php

Ben mysqli sınıfını kullanarak PHP veritabanı işleyicisi sınıf yazma ve ifadeleri hazırlanmıştır. Ben sonucu yazdırmak için çalışıyordu. Bazı hata ayıklama yapmak için karar çok doğru yarasa kapalı işe yaramadı. Ben ne olduğunu görebiliyordu ben mysqli_statement sınıfından num_rows() yöntemini kullanmaya çalıştı, ama 0 dönen tutulur. Ben basit tutmak için test kod küçük bir bölümünü yazmaya karar verdim yanlış gidiyor. Sonra ben istediğim verileri döndürmek için başardı, ama aslında bazı verileri seçme ve alma bile num_rows() metodu halen 0 döndürür. İşte kod:

$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if(mysqli_connect_errno())
{
    die('connection failed');
}

$statement = $mysqli->stmt_init();

$query = "SELECT name FROM table WHERE id = '2000'";
if($statement->prepare($query))
{
    $statement->execute();
    $statement->bind_result($name);
    $statement->fetch();
    $statement->store_result();
    echo $statement->num_rows();
    echo $name;	
}
else
{
    echo 'prepare statement failed';
    exit();
}

So yeah, expected result is:
1name

And actual result is:
0name

Bu yüzden kimse bana söyleyebilir misiniz?

3 Cevap

Num_rows () geçerli resultset göre raporlama merak ediyorum. Önce verileri getiriliyor num_rows () yakalamayı deneyin. örneğin

if($statement->prepare($query))
{
    $statement->execute();
    $statement->store_result();
    echo $statement->num_rows();
    $statement->bind_result($name);
    $statement->fetch();
    echo $name; 
}

Herhangi bir etkisi var mı?

num_rows bir özelliktir, bir yöntem değildir.

Eğer $ isim ilan ettik gibi görünmüyor.

Ayrıca, bind_result (kaldırmayı deneyin) ve () getir yüzden bu gibi bir şey okur:

$statement->execute();

$statement->store_result();

printf("Number of rows: %d.\n", $statement->num_rows);