PDO 사용 가이드: 다중 쿼리를 사용하여 SQL Server 작동
P粉178132828
2023-08-13 20:25:23
<p>결과 세트를 반환하지 않는 일부 쿼리를 실행한 다음 <em>실제</em> 쿼리를 실행하여 결과를 얻고 싶습니다.
다음은 작동하지 않는 예입니다. </p>
<pre class="brush:php;toolbar:false;"><?php
노력하다 {
$db = new PDO('dblib:host=myhost;dbname=master','user','password');
$query = "@entier int = 1 선언;";
$db->exec($query);
$query = "@enter 선택;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($행);
}
잡기(PDOException $e) {
인쇄($e->getMessage());
}
잡기 (예외 $e) {
인쇄($e->getMessage());
}
?></pre>
<p>다음 코드도 작동하지 않습니다.
</p>
<pre class="brush:php;toolbar:false;">{를 시도해보세요
$db = new PDO('dblib:host=myhost;dbname=master','user','password');
$query = "@entier int = 1 선언; @entier 선택;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($행);
}
잡기(PDOException $e) {
인쇄($e->getMessage());
}
잡기 (예외 $e) {
인쇄($e->getMessage());
}
?></pre>
<p>그러나 다음 코드는 작동합니다: </p>
<pre class="brush:php;toolbar:false;"><?php
노력하다 {
$db = new PDO('dblib:host=myhost;dbname=master','user','password');
$query = "1을 선택하세요;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($행);
}
잡기(PDOException $e) {
인쇄($e->getMessage());
}
잡기 (예외 $e) {
인쇄($e->getMessage());
}
?></pre>
<p>도움을 주셔서 감사합니다</p>
오래된 내용이라는 것을 알고 있지만 Google을 통해 이 질문을 찾는 다른 분들을 위해 말씀드립니다. 여러 쿼리의 결과 집합을 반복하려면 PDOStatement::nextRowset을 사용해야 합니다.
하지만 일부 버전에서는 nextRowset 및 dblib를 사용할 때 메모리 문제가 있는 것 같아서(제 경우에는 94Tb의 메모리가 할당되었습니다...) 결국 여러 SQL 쿼리를 모두 피하기 위해 다시 설계했습니다(값을 복사하는 동안) 사용되는 곳에서 선언됨).