「MySQL IN 配列の最初の値のみを処理する」
P粉921165181
P粉921165181 2023-09-01 12:53:15
0
2
500
<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>
P粉921165181
P粉921165181

全員に返信(2)
P粉216203545

次のようなコードを試してください:

リーリー
いいねを押す +0
P粉446800329

IN 句の整数ごとに ? を 1 つではなく 1 つ準備する必要があります。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート