首頁  >  問答  >  主體

PDO的使用指南:使用多個查詢來操作Sql Server

<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粉178132828P粉178132828456 天前488

全部回覆(1)我來回復

  • P粉770375450

    P粉7703754502023-08-14 16:31:58

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

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

    回覆
    0
  • 取消回覆