Guide d'utilisation de PDO : Utilisation de plusieurs requêtes pour faire fonctionner SQL Server
P粉178132828
2023-08-13 20:25:23
<p>Je souhaite exécuter certaines requêtes qui ne renvoient pas de jeu de résultats, puis exécuter une requête <em>real</em> et obtenir ses résultats.
Voici un exemple qui ne fonctionne pas : </p>
<pre class="brush:php;toolbar:false;"><?php
essayer {
$db = new PDO('dblib:host=myhost;dbname=master','user','password');
$query = "déclarer @entier int = 1;";
$db->exec($query);
$query = "sélectionner @entier;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($lignes);
}
attraper (PDOException $e) {
print ($e->getMessage());
}
attraper (Exception $e) {
print ($e->getMessage());
}
?>≪/pré>
<p>Ce code ne fonctionne pas non plus :
</p>
<pre class="brush:php;toolbar:false;">essayer {
$db = new PDO('dblib:host=myhost;dbname=master','user','password');
$query = "déclarez @entier int = 1; sélectionnez @entier;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($lignes);
}
attraper (PDOException $e) {
print ($e->getMessage());
}
attraper (Exception $e) {
print ($e->getMessage());
}
?>≪/pré>
<p>Mais ce code fonctionne : </p>
<pre class="brush:php;toolbar:false;"><?php
essayer {
$db = new PDO('dblib:host=myhost;dbname=master','user','password');
$query = "sélectionner 1;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($lignes);
}
attraper (PDOException $e) {
print ($e->getMessage());
}
attraper (Exception $e) {
print ($e->getMessage());
}
?>≪/pré>
<p>Merci pour votre aide</p>
Je sais que c'est vieux, mais pour tous ceux qui trouvent cette question via Google : vous devez utiliser PDOStatement::nextRowset pour parcourir les ensembles de résultats de plusieurs requêtes.
Cependant, dans certaines versions, il semblait y avoir des problèmes de mémoire lors de l'utilisation de nextRowset et dblib (dans mon cas, 94 To de mémoire ont été alloués en essayant...), j'ai donc fini par repenser pour éviter complètement plusieurs requêtes SQL (alors que c'est pour copier la valeur déclaré là où il est utilisé).