PDO 기반 SQL 쿼리에서는 % 와일드카드 문자가 포함된 LIKE 값을 바인딩해야 하는 경우가 흔합니다. 이러한 값을 바인딩하면 SQL 주입 방지가 보장됩니다. 그러나 이를 수행하기 위한 구문은 혼란스러울 수 있습니다.
쿼리를 고려하십시오.
select wrd from tablename WHERE wrd LIKE '$partial%'
여기에서 PDO를 사용하여 변수 $partial을 바인딩합니다. % 문자를 바인딩하는 방법을 결정할 때 딜레마가 발생합니다.
옵션 1:
select wrd from tablename WHERE wrd LIKE ':partial%'
partial을 $에 바인딩 부분="somet".
옵션 2:
select wrd from tablename WHERE wrd LIKE ':partial'
partial을 $partial="somet%"에 바인딩합니다.
옵션 3(대체):
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
MySQL CONCAT 함수를 사용하여 문자열 연결을 수행합니다.
검색되는 부분 단어에 다음이 포함된 경우 % 또는 밑줄 문자, 특수 처리가 필요합니다. 해결 방법은 PDO 문에 ESCAPE 절을 사용하는 것입니다.
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'"); $escaped = str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var); $stmt->bindParam(':term', $escaped);
이 기술을 사용하면 LIKE 표현식 내에서 특수 문자가 올바르게 해석됩니다.
위 내용은 PDO에서 LIKE 값을 % 문자와 바인딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!