php-LIMITが設定されていない場合、PDO/MySQLにデフォルトのLIMITを設定します
PHPでMySQLからの結果のデフォルト制限をグローバルに設定および設定解除できるかどうかを調べようとしています。
それがどのように見えるかについてのいくつかの擬似コード:
$pdo->prepare('SELECT * FROM example');
$pdo->setAttribute(PDO::DEFAULT_LIMIT, 1000); // max of 1000 rows returned
$pdo->exec();
$pdo->setAttribute(PDO::DEFAULT_LIMIT, 0); // no limit
// OR
$pdo->query('SET LIMIT_FOR_THIS_MYSQL_SESSION = 1000'); // max of 1000 rows returned
$pdo->prepare('SELECT * FROM example');
$pdo->exec();
$pdo->query('SET LIMIT_FOR_THIS_MYSQL_SESSION = 0'); // no limit
PDO/MySQLがこのようなものをサポートしているかどうかはわかりません。そうでない場合、この動作をエミュレートすることは可能ですか? (理想的にはPHPでSQLを解析しませんが、取得できるものを使用します)
注:実際のコードでは、PDOには接続とクエリの両方のラッパークラスがあるため、クエリのすべての部分で何が起こるかを動的に制御でき、クエリ文字列に簡単にアクセスできますとクエリ変数。
コンテキスト:
私はAPIに取り組んでおり、一度に返される結果の数に制限を設定しようとしています。エンドポイントは数十あるため、クエリの制限をグローバルに設定および設定解除する方がはるかに簡単です。
実際のコードがクエリを実行する方法のカスタマイズされた性質により、上記のようなものは、各エンドポイント(それぞれのエンドポイント)でロジックを設定する必要はなく、PDOラッパー(1ファイル)だけで実装できます。 LIMIT句を動的に追加するには、複数のファイルで構成できます。
答え :
解決策:
MySQLの SELECTステートメントから返される最大行数。ザ
新しい接続のデフォルト値は、
サーバーはテーブルごとに許可します。一般的なデフォルト値は(232)-1または
(264)-1。制限を変更した場合、デフォルト値は次のようになります。
DEFAULTの値を割り当てることによって復元されます。
SELECTにLIMIT句がある場合、LIMITは
sql_select_limitの値。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。