9

ここや他の多くのサイトの例に従っていますが、期待される結果が得られません

PHP コードのスニペット。

$query="SELECT * FROM book";
$result=mysql_query($query);
echo mysql_num_rows($result); //returns 14


$query="SELECT FOUND_ROWS()";
$rtotal=mysql_query($query);
echo mysql_result($rtotal,0); //returns 14


$query="SELECT * FROM book LIMIT 0,4";
$result=mysql_query($query);
echo mysql_num_rows($result); //returns 4


$query="SELECT FOUND_ROWS()";
$rtotal=mysql_query($query);
echo mysql_result($rtotal,0); //returns 4 Why is it 4 and not 14??

最後の例では、なぜ 14 ではなく 4 なのですか?? 私は何を間違っていますか?

4

2 に答える 2

18

SQL_CALC_FOUND_ROWSをselectステートメントに追加します:http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_found-rows

これにより、MySQLは、limitステートメントが存在しないかのように行をカウントします。

$query="SELECT SQL_CALC_FOUND_ROWS * FROM book LIMIT 0,4";
于 2012-04-10T06:25:29.843 に答える
2

最新のクエリは 4 行 ( $query="SELECT * FROM book LIMIT 0,4";) を返しました。

そのため、14 ではなく 4 が返されます。


ドキュメントを引用するには:

成功した最新の SELECT ステートメントに SQL_CALC_FOUND_ROWS オプションがない場合、FOUND_ROWS() は、そのステートメントによって返された結果セットの行数を返します。ステートメントに LIMIT 句が含まれている場合、FOUND_ROWS() は制限までの行数を返します。

于 2012-04-10T06:23:46.053 に答える