如何强制MySQL返回有限的行?

时间:2011-01-11 08:05:09

标签: php mysql limit

我想限制用户提交的mysql查询的结果。 目前我只是通过PHP解析查询字符串,然后追加LIMIT。 对于具有许多嵌套选择/连接的更复杂查询,事情变得复杂且不太可预测。 有没有通用的方法强制mysql只返回有限的结果,即使用户要求全套?

感谢
阿尔曼

2 个答案:

答案 0 :(得分:2)

您要求使用某些服务器配置设置来限制所有查询返回的最大行数。也就是说,select * from mytable将返回最大x数(x在全局服务器配置中设置)或行,即使表中还有更多行。

不幸的是,这在MySQL的标准发行版中是不可能的。您可以对每小时的最大查询设置限制,甚至可以设置用户在服务器中可以执行的操作。但是,查询结果中的行数限制不能全局设置。

但是,您可以获取MySQL社区版源代码并添加全局查询结果限制的配置。 此外,如果您使用某种连接器连接到MySQL(例如,如果您从.NET连接到MySQL),您可以保持服务器不变,但修改连接器代码并在那里添加所需的限制配置选项。

答案 1 :(得分:0)

如此处所述:Set a default LIMIT in PDO/MySQL when no LIMIT is set,可以使用 MySQL 设置“sql_select_limit”来限制返回记录的最大数量:

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_sql_select_limit

此设置至少在 MySQL 5.6 中可用。