FOUND_ROWS () 0 dönen tutar

3 Cevap php
$result = $db_con->query("SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10");

$count_result = $db_con->query("SELECT FOUND_ROWS() as totalcount");
$row = $count_result->fetch_assoc();
$total = $row['totalcount'];

$ Toplam $ sonuç içinde tüm kullanıcı satırları içeriyor olsa bile 0 dönen tutar.

ini_set("mysql.trace_mode", "0");

Burada benzer bir Q arama üzerinden bu ayar hakkında öğrendim, ama benim sorunumu çözmedi.

Ben MySQL istemcisi 2 select deyimleri kullandığınızda her zaman doğru sayısını verir. Sadece benim php sayfasında çalışma almak için nasıl anlamaya görünüyor olamaz.

PHP Version: 5.2.5 build 6 MySQL Version: 5.1.30

Not: Burada verilen kod benim gerçek projede kullanılan değil, ancak ben toplam sayısını almak mümkün değil varlık ile yaşıyorum sorunu örneklemek yapar. Bu kod, ben found_rows (yaklaşık okudum ne), çalışması gerekir ama öyle değil.

3 Cevap

Php.net ben belki aynı sorunla birini buldum. O oluşabilir bir yarış durumu konuşuyor: php.net. Temelde o geçici şeyler yavaşlatmak pahasına tablo kilitleme bu sorunu çözer.

LIMIT) (found_rows yapmak için gereklidir düzgün çalışmayabilir

Yani, senin sorgunun sonuna bir SINIRI ekleyin.

SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 0,10;

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

FOUND_ROWS() - Bir LİMİT yan tümcesi içeren bir SELECT için, iade edileceği satır sayısı hiçbir LIMIT deyimi vardı

Ben kullandığınız hangi veritabanı kitaplığı emin değilim ama bir mysql veritabanından php bir select deyimi satır sayısını saymak için çalıştığınız gibi görünüyor.

Eğer php mysql veritabanı fonksiyonları dahili çalışır eğer görme denediniz mi?

$count_result = mysql_query("SELECT COUNT(*) as totalcount FROM users");
$row = mysql_fetch_array($count_result);

$total = $row['totalcount'];