そのため、データベースに対して独自のクエリを記述できる領域がありますが、返される結果を制限したいと思います(PhpMyAdminのように)。
したがって$_POST['query']
、制限ステートメントがあるかどうかを確認する必要があります。ある場合は、30未満であることを確認してください。制限がない場合は追加する必要があります。
どうすればいいですか?
リスクを無視して…クエリをサブクエリとして利用し、制限をかけるのがベストだと思います。したがって、クエリの評価を避けます。
SELECT *
FROM (
SELECT *
FROM 'table'
LIMIT 0 , 100
) AS query
LIMIT 0 , 30
関数を使用preg_*
してクエリをチェックし、好みの制限を挿入できます。
編集:LIMIT
キーワードの使用の可能性を完全に無視しました。編集版はこちら。
$query = 'SELECT * FROM aa LIMIT 100,20';
$limit = 20; // predefined max limit
// possibilities:
// LIMIT N[,N]
// LIMIT N OFFSET N
preg_match('~(?<=\blimit\s)\s*(?<limit>\d+)\s*(,\s*\d+|\soffset\s+\d+)?\s*$~i',$query,$limitStr);
if (isset($limitStr['limit'])) {
$maxLimit = min((int)$limitStr['limit'],$limit);
// user might have already limited it so this is
// just to make sure it does not exceed your max.
$query = preg_replace('~(?<=\blimit\s)\s*\d+\s*(,\s*\d+|\soffset\s+\d+)?\s*$~i',$maxLimit.'$1',$query);
} else $query .= " LIMIT $limit";
echo $query;
出力しますSELECT * FROM aa LIMIT 20,20