"Hanya proses nilai pertama tatasusunan MySQL IN"
P粉921165181
2023-09-01 12:53:15
<p>Saya menggunakan pengaturcaraan PHP untuk mencipta pernyataan PDO. </p>
<p>Pernyataan prapemprosesan PDO adalah seperti berikut: </p>
<p><kod>Kemas kini `log` SET `id` = ?
<p><kod>IN</code>Kandungan pembolehubah dalam tatasusunan ialah integer. </p>
<p> <kod>?</code> ialah satu integer. <kod>?</kod> ialah tatasusunan integer, jadi saya menggabungkannya ke dalam rentetan <kod>1,2,3</kod>, rentetan ini biasanya berfungsi untuk <kod> /code>array. </p>
<p>Jadi kod lengkapnya adalah seperti berikut: </p>
<pre class="brush:php;toolbar:false;">public function mergeIDs($newID,$changeTheseIDs){ // (integer dan tatasusunan integer, masing-masing)
$inSet = implode(',',$changeTheseIDs);
$query = $this->connect()->prepare("KEMASKINI `log` SET `id` = ? DI MANA `id` DALAM ( ? );");
$query->execute([$newID,$changeTheseIDs]);
}</pre>
<p><strong>Masalahnya nampaknya SQL hanya memproses ID integer pertama yang dimasukkan ke dalam tatasusunan <kod>IN</code> </strong>Mana-mana ID yang sepadan dengan integer dalam tatasusunan <kod>IN</code> </p>
<p>Jika saya menjalankan SQL dalam alat SQL pada pelayan saya seperti ini: </p>
<p><kod>KEMASKINI `log` SET `id` = 5 DI MANA `id` DALAM (1,2,3);</code></p>
<p>Ia berfungsi dengan baik, saya menukar semua ID 1, 2 atau 3 kepada 5. </p>
<p>Tetapi versi PDO saya hanya menukar 1 kepada 5, 2 dan 3 kekal sama. </p>
<p>Ada idea? </p>
Cuba kod seperti ini:
Anda memerlukan satu
?
untuk setiap integer dalam klausa IN, bukan hanya satu.