我试图找出是否可以在PHP中全局设置和取消设置MySQL的默认结果限制。
可能看起来像的一些伪代码:
SELECT
this_.ReceivedQtty as y0_,
framealias1_.Name as y4_,
stonealias5_.Name as y7_
FROM [InventoryItemFram] this_
right outer join [Frame] framealias1_ on this_.Frame_id=framealias1_.Id
inner join [Warehouse] warehousea2_ on framealias1_.Whs_id=warehousea2_.Id
inner join [InventoryItem] itemalias3_ on this_.InventoryItem_id=itemalias3_.Id
inner join [InventoryItemDetails] itemdetail4_ on itemalias3_.Details_id=itemdetail4_.Id
inner join StoneAttribute stonealias5_ on itemdetail4_.StoneName_id=stonealias5_.Id
我不确定PDO / MySQL是否支持这样的事情。如果不是可以模仿这种行为? (理想情况下,不用PHP解析SQL,但我会采取我能得到的)
注意:在实际代码中,PDO有一个连接和查询的包装类,因此我可以动态控制查询的每个部分发生的事情,并且可以轻松访问查询字符串和查询变种。
上下文
我正在开发一个API,我们正在尝试设置一次可以返回多少结果的限制。由于存在数十个端点,因此能够以某种方式全局设置和取消设置查询限制会容易得多。
由于实际代码如何进行查询的自定义特性,上面描述的内容将只能在PDO包装器(1文件)中实现,而不必在每个端点中设置逻辑(每个端点)它可以由几个文件组成)动态添加LIMIT子句。
答案 0 :(得分:1)
您可以使用MySQL的sql_select_limit设置来配置select应返回的记录数。它的值可以从配置文件中设置,动态地从会话中的代码中设置。它的值被实际sql语句中的任何limit子句覆盖:
从SELECT语句返回的最大行数。该 新连接的默认值是最大行数 服务器允许每个表。典型的默认值为(232)-1或 (264)-1。如果您更改了限制,则默认值可以是 通过分配DEFAULT值来恢复。
如果SELECT具有LIMIT子句,则LIMIT优先于 sql_select_limit的值。