我想知道是否可以在PHP中全局設置和取消設置MySQL默認結果限制。當沒有設置LIMIT時,在PDO/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子句。
只是檢查,但會影響只有當前會議或所有會議?我假設所有? –
@Nick J只有當前會話 –
@RaymondNijland nope,默認情況下該設置會影響所有會話,但如果需要也可以根據會話進行調整(請參閱鏈接文檔中的範圍,這是全局性和會話) – Shadow