私はユーザーから送信されたmysqlクエリの結果を制限したいと思います。 現在、PHPでクエリ文字列を解析していて、最後にLIMIT
を追加しています。 多くのネストされた選択/結合を含むより複雑なクエリでは、事態が複雑になり、予測が難しくなります。 ユーザが完全な設定を要求しても、mysqlに限定された結果しか返さないようにする一般的な方法はありますか?MySQLに制限された行を返すように強制するには?
おかげ
アルマン
私はユーザーから送信されたmysqlクエリの結果を制限したいと思います。 現在、PHPでクエリ文字列を解析していて、最後にLIMIT
を追加しています。 多くのネストされた選択/結合を含むより複雑なクエリでは、事態が複雑になり、予測が難しくなります。 ユーザが完全な設定を要求しても、mysqlに限定された結果しか返さないようにする一般的な方法はありますか?MySQLに制限された行を返すように強制するには?
おかげ
アルマン
あなたはすべてのクエリによって返される行の最大数を制限するために、いくつかのサーバーの構成設定を求めています。つまり、select * from mytable
は、テーブルにさらに多くの行があっても最大x数(xはグローバルサーバー設定で設定されます)または行を返します。
残念ながら、これはMySQLの標準ディストリビューションでは不可能です。ユーザーがサーバーで実行できる操作であっても、1時間あたりの最大問合せに制限を設定できます。ただし、問合せ結果の行数の制限はグローバルに設定できません。
ただし、MySQLコミュニティエディションのソースコードを入手し、グローバルクエリ結果制限の設定を追加することができます。 また、何らかの種類のコネクタを使用してMySQLに接続している場合(たとえば、MySQLから.NETに接続している場合)は、そのままサーバーをそのまま使用できますが、コネクタコードを変更して、 。
ヒントありがとう、私はPHPを使用しています:PDOコネクタが再び制限を追加するSQLパーサを記述する必要があります。 – Arman
LIMITは正しい方法です。あなたは正確に何を目指していますか? –
私は4Tbのテーブルを持っていますが、すぐに最大50行を取得することを許可したいと思います。ユーザーは読み取り専用モードでアクセスできます。 – Arman