考慮下面的代碼:PHP的PDO準備方法失敗雖然在循環
// Connect to MySQL up here
$example_query = $database->prepare('SELECT * FROM table2');
if ($example_query === false) die('prepare failed');
$query = $database->prepare('SELECT * FROM table1');
$query->execute();
while ($results = $query->fetch())
{
$example_query = $database->prepare('SELECT * FROM table2');
if ($example_query === false) die('prepare failed'); //it will die here
}
我顯然試圖準備語句SELET一切從表2的兩倍。第二個(WHILE循環中的)總是失敗並導致錯誤。
這只是在我的生產服務器,本地開發我沒有問題,所以它必須是某種設置某種地方。
我的直接想法是,MySQL的某種max_connections設置設置爲1,並且連接保持打開狀態,直到WHILE循環完成,因此當我嘗試準備新查詢時它說「nope too too many already already 「並吐出。
任何想法?
編輯:是的,我知道有沒有必要做兩次,它只被while循環編寫我的實際代碼,但就像我說失敗了我的生產服務器上,以便一些測試後,我發現,簡單的SELECT *查詢在WHILE循環中失敗,但不能退出。我給出的示例代碼顯然是非常淡化以說明問題。
我不明白你在說什麼。如果你在循環中使用prepare(),那麼你做錯了。準備在循環之外,在裏面執行。 – 2009-04-21 19:34:48