Panduan penggunaan PDO: Menggunakan berbilang pertanyaan untuk mengendalikan Pelayan Sql
P粉178132828
2023-08-13 20:25:23
<p>Saya mahu melaksanakan beberapa pertanyaan yang tidak mengembalikan set hasil, dan kemudian melaksanakan <em>pertanyaan sebenar</em>
Berikut ialah contoh yang tidak berfungsi: </p>
<pre class="brush:php;toolbar:false;"><?php
cuba {
$db = PDO baharu('dblib:host=myhost;dbname=master','user','password');
$query = "deklarasikan @entier int = 1;";
$db->exec($query);
$query = "pilih @entier;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($baris);
}
tangkap (PDOException $e) {
cetak ($e->getMessage());
}
tangkap (Pengecualian $e) {
cetak ($e->getMessage());
}
?></pra>
<p>Kod ini juga tidak berfungsi:
</p>
<pre class="brush:php;toolbar:false;">cuba {
$db = PDO baharu('dblib:host=myhost;dbname=master','user','password');
$query = "deklarasikan @entier int = 1; pilih @entier;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($baris);
}
tangkap (PDOException $e) {
cetak ($e->getMessage());
}
tangkap (Pengecualian $e) {
cetak ($e->getMessage());
}
?></pra>
<p>Tetapi kod ini berfungsi: </p>
<pre class="brush:php;toolbar:false;"><?php
cuba {
$db = PDO baharu('dblib:host=myhost;dbname=master','user','password');
$query = "pilih 1;";
$stmt = $db->query($query);
$rows = $stmt->fetchAll();
print_r($baris);
}
tangkap (PDOException $e) {
cetak ($e->getMessage());
}
tangkap (Pengecualian $e) {
cetak ($e->getMessage());
}
?></pra>
<p>Terima kasih atas bantuan anda</p>
Saya tahu ini sudah lama, tetapi bagi sesiapa sahaja yang menemui soalan ini melalui Google: Anda perlu menggunakan PDOStatement::nextRowset untuk mengulang set hasil daripada berbilang pertanyaan.
Walau bagaimanapun, dalam beberapa versi nampaknya terdapat masalah ingatan apabila menggunakan nextRowset dan dblib (dalam kes saya 94Tb memori telah diperuntukkan untuk mencuba...), jadi saya akhirnya mereka bentuk semula untuk mengelakkan berbilang pertanyaan SQL sama sekali (sementara adalah untuk menyalin nilai diisytiharkan di mana ia digunakan).