집 >데이터 베이스 >MySQL 튜토리얼 >PDO에서 와일드카드를 사용하여 LIKE 매개변수를 안전하게 바인딩하는 방법은 무엇입니까?
PDO는 바인딩된 매개변수를 사용하여 SQL 쿼리를 실행하는 안전한 방법을 제공하여 SQL 주입 취약점을 방지합니다. %와 같은 와일드카드 문자를 포함하는 LIKE 매개변수를 바인딩할 때 혼동이 발생할 수 있습니다.
아래 쿼리에서는 PDO를 사용하여 $partial% 변수를 바인딩하려고 합니다.
select wrd from tablename WHERE wrd LIKE '$partial%'
PDO가 이러한 바인딩을 처리하는 방법을 이해하는 것이 중요합니다. 올바른 접근 방식은 특정 요구 사항에 따라 다릅니다.
예, 유효한 옵션입니다.
select wrd from tablename WHERE wrd LIKE ':partial%'
여기서 :partial은 $partial="somet"에 바인딩됩니다.
다음 접근 방식을 사용할 수도 있습니다.
select wrd from tablename WHERE wrd LIKE ':partial'
여기서 :partial은 $partial="somet%"에 바인딩됩니다.
원하는 경우 MySQL 쿼리 내에서 문자열 연결을 수행할 수 있습니다. 자체:
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
부분 단어에 %, _ 또는 와 같은 특수 문자가 포함된 경우 매개변수를 바인딩하기 전에 수동으로 이스케이프해야 합니다. 다음 코드는 이를 보여줍니다.
$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!