찾다

 >  Q&A  >  본문

"MySQL IN 배열의 첫 번째 값만 처리합니다."

<p>PDO 문을 생성하기 위해 PHP 프로그래밍을 사용하고 있습니다. </p> <p>PDO 전처리 문은 다음과 같습니다.</p> <p><code>`log` SET `id` 업데이트 = ? WHERE `id` IN ( ? );</code></p> <p><code>IN</code>배열의 변수 내용은 정수입니다. </p> <p>첫 번째 <code>?</code>는 단일 정수입니다. 두 번째 <code>?</code>는 정수 배열이므로 <code>1,2,3</code>로 연결합니다. 이 문자열은 일반적으로 <code> IN< /코드>배열. </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粉921165181452일 전487

모든 응답(2)나는 대답할 것이다

  • P粉216203545

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

    다음과 같은 코드를 사용해 보세요:

    으아악

    회신하다
    0
  • P粉446800329

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

    IN 절의 정수마다 하나가 아니라 하나 ?가 필요합니다.

    으아악

    회신하다
    0
  • 취소회신하다