PHP'de mysqli sınıfını ve hazırlanmış ifadeleri kullanarak bir veritabanı işleyicisi sınıfı yazıyordum. Sonucu yazdırmaya çalışıyordum. Yarasadan hemen işe yaramadı, bu yüzden bazı hata ayıklama yapmaya karar verdim. num_rows()
yöntemini mysqli_statement
sınıfından kullanmayı denedim, ancak 0'a dönmeye devam ettim. Daha azını korumak için küçük bir test kodu yazmaya karar verdim, böylece neyin yanlış gittiğini görebildim. Ardından, istediğim verileri geri döndürdüm, ancak num_rows()
yöntemi, aslında bazı verileri seçip aldığında bile 0 değerini döndürüyor.mysqli_statement :: num_rows() yanlış değeri döndürür
$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();
}
Yani evet, beklenen sonuç::
1name
Ve gerçek sonuç şudur: Bu yüzden
0name
kimse bana söyleyebilir İşte kod nedir?
Gerçekten de sorun buydu. Num_rows() öğesinin doğru değeri döndürmesi için, get() öğesinden önce store_result() çağrısı yapılmalıdır. –
Ben de böyle düşündüm; Verilerin getirilmesi iç satır sayacını artırır, böylece bir şeyleri yapabilirsiniz ($ ifade-> num_rows()) {/ * şeyler yapın * /} –
@ StevenOxley'in yorumunun bu soruya verilen cevap olduğuna inanıyorum. – Sablefoste