>백엔드 개발 >PHP 튜토리얼 >PDO 확장을 사용하여 LIKE 값을 바인딩하는 방법은 무엇입니까?

PDO 확장을 사용하여 LIKE 값을 바인딩하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-16 15:28:03967검색

How to Bind LIKE Values with the PDO Extension?

PDO 확장을 사용하여 LIKE 값 바인딩

LIKE 쿼리로 작업할 때 PDO 확장을 사용하여 변수 값을 바인딩하는 방법을 고려하는 것이 중요합니다. . 검색 문자열 끝에 '%' 와일드카드 문자가 있으면 몇 가지 문제가 발생할 수 있습니다.

제공된 쿼리에서:

select wrd from tablename WHERE wrd LIKE '$partial%'

PDO가 있는 ${partial} 변수. 세 가지 옵션을 고려해 볼 가치가 있습니다.

옵션 1: 끝에 '%'를 사용하여 바인딩

select wrd from tablename WHERE wrd LIKE ':partial%'

이 옵션에서는 :partial 매개변수가 값 $partial="somet", 끝에 '%'를 유지합니다.

옵션 2: 끝에 '%' 없이 바인딩

select wrd from tablename WHERE wrd LIKE ':partial'

이 옵션에서 :partial은 $partial="somet%"에 바인딩되어 사실상 끝에 고정된 '%'가 있습니다. 검색 문자열.

옵션 3: MySQL의 CONCAT 사용 함수

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')

이 옵션을 사용하면 검색어와 '%'를 연결하여 MySQL 자체 내에서 수행할 수 있습니다.

또한, 찾고 있는 검색어가 LIKE 연산자에 '%', '_' 또는 ''와 같은 특별한 의미가 있는 문자가 포함된 경우 문자열 이스케이프를 사용하는 보다 복잡한 접근 방식이 필요합니다.

$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
$stmt->bindParam(':term', $escaped);

위 내용은 PDO 확장을 사용하여 LIKE 값을 바인딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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