"MySQL IN 배열의 첫 번째 값만 처리합니다."
P粉921165181
2023-09-01 12:53:15
<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>
다음과 같은 코드를 사용해 보세요:
으아악IN 절의 정수마다 하나가 아니라 하나
으아악?
가 필요합니다.