PDO的使用指南:使用多個查詢來操作Sql Server
P粉178132828
P粉178132828 2023-08-13 20:25:23
0
1
487
<p>我想執行一些不傳回結果集的查詢,然後執行一個<em>真實</em>的查詢,並取得其結果。 這是一個不起作用的範例:</p> <pre class="brush:php;toolbar:false;"><?php try { $db = new PDO('dblib:host=myhost;dbname=master','user','password'); $query = "declare @entier int = 1;"; $db->exec($query); $query = "select @entier;"; $stmt = $db->query($query); $rows = $stmt->fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e->getMessage()); } catch (Exception $e) { print ($e->getMessage()); } ?></pre> <p>這段程式碼也不行: </p> <pre class="brush:php;toolbar:false;">try { $db = new PDO('dblib:host=myhost;dbname=master','user','password'); $query = "declare @entier int = 1; select @entier;"; $stmt = $db->query($query); $rows = $stmt->fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e->getMessage()); } catch (Exception $e) { print ($e->getMessage()); } ?></pre> <p>但是這段程式碼可以運行:</p> <pre class="brush:php;toolbar:false;"><?php try { $db = new PDO('dblib:host=myhost;dbname=master','user','password'); $query = "select 1;"; $stmt = $db->query($query); $rows = $stmt->fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e->getMessage()); } catch (Exception $e) { print ($e->getMessage()); } ?></pre> <p>謝謝您的幫忙</p>
P粉178132828
P粉178132828

全部回覆(1)
P粉770375450

我知道這是老舊的,但對於透過Google找到這個問題的其他人來說:你需要使用PDOStatement::nextRowset來迭代處理來自多個查詢的結果集。

然而,在某些版本中,使用nextRowset和dblib時似乎存在內存問題(在我的情況下,嘗試分配了94Tb的內存...),所以我最終重新設計以完全避免多個SQL查詢(而是複製在使用它的地方聲明的值)。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!