ホームページ  >  に質問  >  本文

PDO 使用ガイド: 複数のクエリを使用して SQL Server を操作する

<p>結果セットを返さないクエリをいくつか実行してから、<em>実際の</em>クエリを実行してその結果を取得したいと考えています。 以下は機能しない例です: </p> <pre class="brush:php;toolbar:false;"><?php 試す { $db = 新しい PDO('dblib:host=myhost;dbname=master','user','password'); $query = "@entier int = 1 を宣言します;"; $db->e​​xec($query); $query = "@entierを選択;"; $stmt = $db->クエリ($クエリ); $rows = $stmt->fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e->getMessage()); } catch (例外 $e) { print ($e->getMessage()); } ?></pre> <p>このコードも機能しません: </p> <pre class="brush:php;toolbar:false;">試してください { $db = 新しい PDO('dblib:host=myhost;dbname=master','user','password'); $query = "@entier int = 1 を宣言; @entier を選択;"; $stmt = $db->クエリ($クエリ); $rows = $stmt->fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e->getMessage()); } catch (例外 $e) { print ($e->getMessage()); } ?></pre> <p>しかし、このコードは機能します: </p> <pre class="brush:php;toolbar:false;"><?php 試す { $db = 新しい PDO('dblib:host=myhost;dbname=master','user','password'); $query = "1 を選択;"; $stmt = $db->クエリ($クエリ); $rows = $stmt->fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e->getMessage()); } catch (例外 $e) { print ($e->getMessage()); } ?></pre> <p>ご協力いただきありがとうございます</p>
P粉178132828P粉178132828408日前459

全員に返信(1)返信します

  • P粉770375450

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

    これが古いことは承知していますが、Google 経由でこの質問を見つけた他の人へ: PDOStatement::nextRowset を使用して、複数のクエリからの結果セットを反復処理する必要があります。

    ただし、一部のバージョンでは、nextRowset と dblib の使用時にメモリの問題が発生したようです (私の場合、94Tb のメモリが割り当てられようとしました...)。そのため、複数の SQL クエリを完全に回避するように再設計することになりました (代わりに、使用される場所で宣言された値がコピーされます)。

    返事
    0
  • キャンセル返事