質問

$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を返し続けます。

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

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

MySQLクライアントで2つのselectステートメントを使用すると、常に正しいカウントが出力されます。私のPHPページでそれを動作させる方法を理解できないようです。

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

注:ここで提供したコードは実際のプロジェクトでは使用されていませんが、合計数を取得できないという問題を示しています。 found_rows()について読んだこのコードは動作するはずですが、動作しません。

役に立ちましたか?

解決

php.netで、おそらく同じ問題を抱えている人を見つけました。彼は発生する可能性のある競合状態について話している: php .net 。基本的に、テーブルを一時的にロックすることでこの問題を解決しますが、速度を落とすことになります。

他のヒント

found_rows()が正しく機能するには、

LIMIT が必要です

クエリの末尾にLIMITを追加します。

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()-LIMIT句を持つSELECTの場合、返される行の数にはLIMIT句がありませんでした

どのデータベースライブラリを使用しているかわかりませんが、mysqlデータベースからphpのselectステートメントの行数をカウントしようとしているようです。

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

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

$total = $row['totalcount'];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top