ホームページ  >  に質問  >  本文

「MySQL IN 配列の最初の値のみを処理する」

<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粉921165181P粉921165181437日前473

全員に返信(2)返信します

  • P粉216203545

    P粉2162035452023-09-02 09:56:29

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

    リーリー

    返事
    0
  • P粉446800329

    P粉4468003292023-09-02 00:11:20

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

    リーリー

    返事
    0
  • キャンセル返事