gpt4 book ai didi

php - 未设置 LIMIT 时在 PDO/MySQL 中设置默认 LIMIT

转载 作者:行者123 更新时间:2023-11-28 23:15:43 30 4
gpt4 key购买 nike

我正在尝试找出是否可以在 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 的 sql_select_limit设置来配置一个选择应该返回多少条记录。它的值可以从配置文件中设置,从 session 中的代码动态设置。它的值被实际 sql 语句中的任何限制子句覆盖:

The maximum number of rows to return from SELECT statements. The default value for a new connection is the maximum number of rows that the server permits per table. Typical default values are (232)−1 or (264)−1. If you have changed the limit, the default value can be restored by assigning a value of DEFAULT.

If a SELECT has a LIMIT clause, the LIMIT takes precedence over the value of sql_select_limit.

关于php - 未设置 LIMIT 时在 PDO/MySQL 中设置默认 LIMIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43983816/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com