是否可以避開mysql_unbuffered_query()通過打開第二個連接一次運行一個查詢的限制?與mysql_unbuffered_query使用多個連接
例如,下面的代碼是給我的錯誤:
mysql_select_db())調用時沒有首先從先前的無緩衝查詢獲取的所有行
$feedData = mysql_unbuffered_query($sql, $this->_unbufferedDbManager->db->connection);
while ($record = mysql_fetch_assoc($feedData)) {
File::fputcsv($this->_fileHandle, $record, $this->delimiter, $this->enclosure);
$sql = "UPDATE transactions
SET feed_transmit_date = '$this->today'
WHERE transaction_id = " . $record['transaction_id'];
$this->dbManager->DbQuery($sql);
print_r($this->_unbufferedDbManager->db->connection);
print_r($this->dbManager->db->connection);
}
兩個print_r的功能(的在最後輸出: 資源ID#637Resource編號#639
DbManager是一個老梨數據訪問層
注意:我會使用一個mysql_unbuffered_query標籤,但是最近我打開了一個賞金條,將我置於「創建新標籤特權」之下。
數據庫的每個連接/句柄都有自己的上下文,因此可以打開多個連接並在每個連接上運行獨立查詢。只需要小心地在所有的mysql _ *()調用中指定正確的連接句柄,否則你會在兩者之間的混合操作中得到非常奇怪/不好的結果。 – 2011-05-12 21:54:38
由於看起來你有2個不同的數據庫連接(不同的資源ID),這應該是工作。在旁註中,最好在循環之後立即執行'UPDATE',這樣未緩衝的查詢可以快速完成所有的讀取操作? – Fanis 2011-05-12 22:01:17
@Fanis - 這就是我們最初嘗試的方式,它絕對是一種更有效的方法。問題在於,監視錯誤變得很困難,原來的查詢是從不同的表和數據庫中選擇而不是更新查詢,它們比我作爲這個問題的例子要複雜一些。也許我只是得到一個誤導性的錯誤信息,而我正在爲錯誤的解決方案吠叫錯誤的樹。 – 2011-05-13 14:15:03