>백엔드 개발 >PHP 튜토리얼 >PHP를 사용하여 MySQL 준비 문에서 LIMIT를 올바르게 사용하는 방법은 무엇입니까?

PHP를 사용하여 MySQL 준비 문에서 LIMIT를 올바르게 사용하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-18 01:01:09555검색

How to Properly Use LIMIT in MySQL Prepared Statements with PHP?

Prepared 문이 포함된 MySQL의 LIMIT 키워드

MySQL의 준비된 문에서 LIMIT 키워드를 사용하려고 하면 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 문자열을 매개변수로 사용할 때 구문 분석 오류가 발생합니다. 이 문제는 실행 중에 기본적으로 모든 매개변수를 문자열로 처리하는 PHP의 PDO로 인해 발생합니다.

제공된 쿼리에서:

SELECT id, content, date
FROM comment
WHERE post = ?
ORDER BY date DESC
LIMIT ?, ?

LIMIT 매개변수의 값이 문자열로 삽입되어 결과적으로 잘못된 SQL 구문:

LIMIT '0', '10'

이 문제를 해결하려면 몇 가지 방법이 있습니다. 옵션:

유형과 매개변수 바인딩

LIMIT 매개변수를 개별적으로 바인딩하고 해당 데이터 유형을 지정합니다.

$comments->bindParam(2, $min, PDO::PARAM_INT);
$comments->bindParam(3, $min, PDO::PARAM_INT);

외부 매개변수 전달 준비된 진술

LIMIT 값에 매개변수를 사용하지 말고 쿼리에 직접 삽입하세요.

$query = sprintf('SELECT id, content, date
    FROM comment
    WHERE post = ?
    ORDER BY date DESC
    LIMIT %d, %d', $min, $max);

에뮬레이트 준비 비활성화

일부 드라이버는 준비된 명령문을 에뮬레이트하고 자동으로 숫자 인수를 인용할 수 있습니다. 이 동작을 비활성화합니다.

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);

이러한 접근 방식 중 하나를 구현하면 MySQL 내의 준비된 문에서 LIMIT 키워드를 올바르게 사용할 수 있습니다.

위 내용은 PHP를 사용하여 MySQL 준비 문에서 LIMIT를 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.