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