2009-06-20 7 views
2
$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']; 

$ resultにはすべてのユーザー行が含まれていますが、totalは0を返し続けます。FOUND_ROWS()は0を返され続けます。

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

ここで同様のQを検索してこの設定について知りましたが、問題は解決しませんでした。

MySQLクライアントで2つのselect文を使用すると、常に正しいカウントが出力されます。ちょうど私のPHPページでそれを働かせる方法を理解するように見えることができません。

PHPバージョン:5.2.5ビルド6 MySQLのバージョン:5.1.30

注:私はここに提供されているコードは、私の実際のプロジェクトで使用されていない、しかし、それは私が持っています問題を例示し合計カウントを取得できません。私がfound_rows()について読んだことから、このコードはうまくいくはずですが、そうではありません。

+0

@Seth:LIMIT句を追加しようとしましたか? – gahooa

+0

ini_set( "mysql.trace_mode"、 "0");私の問題を解決する。質問ありがとうございました: –

答えて

1

なかった私は多分に誰かを見つけました同じ問題。彼は発生する可能性のある競合状態について語っている:php.net。基本的には、テーブルを一時的にロックすることによって、この問題を解決します。

+0

私はグーグルでそのポストを見つけました。 count(*)を使うことに戻ります。 – Seth

-3

使用しているデータベースライブラリがわかりませんが、mysqlデータベースからPHPのselect文の行数を数えようとしているようです。

PHPで組み込みのmysqlデータベース関数で動作するかどうか試してみましたか?

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

$total = $row['totalcount']; 
+0

-1:LIMIT、FOUND_ROWS()についての元の質問には答えません – gahooa

関連する問題