PDO的使用指南:使用多个查询来操作Sql Server
P粉178132828
P粉178132828 2023-08-13 20:25:23
0
1
357
<p>我想执行一些不返回结果集的查询,然后执行一个<em>真实</em>的查询,并获取其结果。 这是一个不起作用的示例:</p> <pre class="brush:php;toolbar:false;">&lt;?php try { $db = new PDO('dblib:host=myhost;dbname=master','user','password'); $query = "declare @entier int = 1;"; $db-&gt;exec($query); $query = "select @entier;"; $stmt = $db-&gt;query($query); $rows = $stmt-&gt;fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e-&gt;getMessage()); } catch (Exception $e) { print ($e-&gt;getMessage()); } ?&gt;</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-&gt;query($query); $rows = $stmt-&gt;fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e-&gt;getMessage()); } catch (Exception $e) { print ($e-&gt;getMessage()); } ?&gt;</pre> <p>但是这段代码可以运行:</p> <pre class="brush:php;toolbar:false;">&lt;?php try { $db = new PDO('dblib:host=myhost;dbname=master','user','password'); $query = "select 1;"; $stmt = $db-&gt;query($query); $rows = $stmt-&gt;fetchAll(); print_r($rows); } catch (PDOException $e) { print ($e-&gt;getMessage()); } catch (Exception $e) { print ($e-&gt;getMessage()); } ?&gt;</pre> <p>谢谢您的帮助</p>
P粉178132828
P粉178132828

모든 응답(1)
P粉770375450

我知道这是老旧的,但对于通过Google找到这个问题的其他人来说:你需要使用PDOStatement::nextRowset来迭代处理来自多个查询的结果集。

然而,在某些版本中,使用nextRowset和dblib时似乎存在内存问题(在我的情况下,尝试分配了94Tb的内存...),所以我最终重新设计以完全避免多个SQL查询(而是复制在使用它的地方声明的值)。

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!