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 중국어 웹사이트의 기타 관련 기사를 참조하세요!