배열 매개변수를 전달하고 PDO와 함께 LIMIT 절을 사용하는 방법

Barbara Streisand
풀어 주다: 2024-10-23 19:37:01
원래의
930명이 탐색했습니다.

How to Pass Array Parameters and Use LIMIT Clause with PDO

PDO에서 배열 매개변수 전달 및 LIMIT 절 사용

데이터베이스 쿼리 작업 시 매개변수 배열을 LIMIT 절을 활용하는 동안 PDO 문. 그러나 개별 매개변수를 설정하기 위해 BindParam 메소드를 사용할 때는 이것이 어려울 수 있습니다.

딜레마

LIMIT 절에 바인딩하려면 특정 숫자 값이 필요하기 때문에 문제가 발생합니다. , 실행 메소드는 명명된 매개변수 배열을 기대합니다. 이러한 비호환성으로 인해 두 접근 방식을 동시에 사용할 수 없습니다.

문제 극복

해결책은 PDO::ATTR_EMULATE_PREPARES의 기본 설정을 비활성화하는 데 있습니다. 활성화되면 PDO는 내부적으로 동적 SQL을 생성하고 값을 인용하여 본질적으로 준비된 명령문을 에뮬레이션합니다. 그러나 이 기본 동작은 명명된 매개 변수 전달을 방해합니다.

에뮬레이트 준비 비활성화

setAttribute 메서드를 사용하여 PDO::ATTR_EMULATE_PREPARES를 false로 설정하면 기본 동작이 비활성화됩니다. . 이를 통해 PDO는 실제 준비된 명령문을 사용하여 LIMIT 절을 계속 활용하면서 명명된 매개변수의 바인딩을 활성화할 수 있습니다.

사용 예

<code class="php">$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :limit1, :limit2";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(':id' => $id, ':limit1' => $limit1, ':limit2' => $limit2)); // Works!</code>
로그인 후 복사

성능 고려 사항

MySQL에서는 성능 향상을 위해 기본적으로 에뮬레이트된 준비가 사용됩니다. 에뮬레이트된 준비를 비활성화하면 성능이 약간 저하될 수 있지만 매개변수 바인딩의 유연성이 향상됩니다.

추가 리소스

이 주제에 대한 자세한 내용은 다음 리소스를 참조하세요.

  • [PDO MySQL: PDO::ATTR_EMULATE_PREPARES를 사용할지 말지?](https://stackoverflow.com/questions/3273325/pdo-mysql-use-pdo-attr-emulate-prepares-or -아님)

위 내용은 배열 매개변수를 전달하고 PDO와 함께 LIMIT 절을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!