「MySQL IN 配列の最初の値のみを処理する」
P粉921165181
2023-09-01 12:53:15
<p>PHP プログラミングを使用して PDO ステートメントを作成しています。 </p>
<p>PDO 前処理ステートメントは次のとおりです。</p>
<p><code>`log` を更新 SET `id` = ? WHERE `id` IN ( ? );</code></p>
<p><code>IN</code>配列内の変数の内容は整数です。 </p>
<p>最初の <code>?</code> は単一の整数です。 2 番目の <code>?</code> は整数の配列なので、それらを文字列 <code>1,2,3</code> に連結します。この文字列は通常、<code> IN< に対して機能します。 /code>配列。 </p>
<p>完全なコードは次のとおりです。</p>
<pre class="brush:php;toolbar:false;">public function mergeIDs($newID,$changeTheseIDs){ // (それぞれ整数と整数の配列)
$inSet = implode(',',$changeTheseIDs);
$query = $this->connect()->prepare("UPDATE `log` SET `id` = ? WHERE `id` IN ( ? );");
$query->execute([$newID,$changeTheseIDs]);
}</pre>
<p><strong>問題は、SQL が <code>IN</code> 配列に挿入された最初の整数 ID のみを処理することのようです。 </strong><code>IN</code> 配列内の整数に一致する ID はすべて変更する必要があります。 </p>
<p>サーバー上の SQL ツールで次のように SQL を実行すると: </p>
<p><code>UPDATE `log` SET `id` = 5 WHERE `id` IN (1,2,3);</code></p>
<p>これは正常に動作します。ID の 1、2、または 3 をすべて 5 に変更します。 </p>
<p>しかし、私の PDO バージョンは 1 から 5 までしか変更されず、2 と 3 は同じままです。 </p>
<p>何かアイデアはありますか? </p>
次のようなコードを試してください:
リーリーIN 句の整数ごとに
リーリー?
を 1 つではなく 1 つ準備する必要があります。