PDO를 사용하여 IN() 조건에 배열 바인딩
데이터베이스 쿼리 영역에서는 우리가 사용하고 싶은 시나리오를 접하는 것이 일반적입니다. IN() 조건의 값 배열입니다. PDO는 매개변수 바인딩을 위한 편리한 메커니즘을 제공하지만 기본적으로 그러한 조건에 직접 배열 바인딩을 지원하지는 않습니다.
사용자 정의 자리 표시자 시퀀스 만들기
이 제한을 극복하려면, 루프를 사용하여 자리 표시자 시퀀스를 수동으로 구성할 수 있습니다.
foreach ($ids as &$val) $val = $db->quote($val); $in = implode(',', $ids);
이 접근 방식은 배열의 모든 값이 따옴표로 묶고 쉼표로 구분하여 유효한 자리 표시자 문자열을 생성합니다.
$stmt = $db->prepare( 'SELECT * FROM table WHERE id IN(' . $in . ')' );
반복 자리 표시자를 사용한 대체 접근 방식
또는 반복되는 자리 표시자를 사용하여 쿼리를 만들고 다음을 지정할 수 있습니다. 실행 중 배열 값:
$inQuery = str_repeat('?,', count($ids) - 1) . '?'; $stmt = $db->prepare("SELECT * FROM table WHERE id IN($inQuery)"); $stmt->execute($ids);
특히 이 접근 방식은 쿼리에 다른 자리 표시자가 포함되어 있지 않아야 합니다.
명명된 자리 표시자 처리
명명된 자리 표시자의 경우 비슷한 방법을 사용하여 자리 표시자 시퀀스를 동적으로 생성할 수 있습니다.
foreach ($ids as $item) { $key = ":id" . $i++; $in .= ($in ? "," : "") . $key; $in_params[$key] = $item; }
이 접근 방식을 사용하면 이름이 지정된 자리 표시자와 함께 값 배열을 사용하여 보다 구조화되고 유연한 바인딩 메커니즘.
위 내용은 PDO를 사용하여 배열을 IN() 조건에 바인딩하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!