PDO-Nutzungsleitfaden: Verwenden mehrerer Abfragen zum Betreiben von SQL Server
P粉178132828
P粉178132828 2023-08-13 20:25:23
0
1
485
<p>Ich möchte einige Abfragen ausführen, die keine Ergebnismenge zurückgeben, und dann eine <em>echte</em>-Abfrage ausführen und deren Ergebnisse abrufen. Hier ist ein Beispiel, das nicht funktioniert: </p> <pre class="brush:php;toolbar:false;"><?php versuchen { $db = neues 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 (Ausnahme $e) { print ($e->getMessage()); } ?></pre> <p>Dieser Code funktioniert auch nicht: </p> <pre class="brush:php;toolbar:false;">try { $db = neues 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 (Ausnahme $e) { print ($e->getMessage()); } ?></pre> <p>Aber dieser Code funktioniert: </p> <pre class="brush:php;toolbar:false;"><?php versuchen { $db = neues 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 (Ausnahme $e) { print ($e->getMessage()); } ?></pre> <p>Vielen Dank für Ihre Hilfe</p>
P粉178132828
P粉178132828

Antworte allen(1)
P粉770375450

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

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!