>  기사  >  백엔드 개발  >  PDO에서 LIKE 값을 % 문자와 바인딩하는 방법은 무엇입니까?

PDO에서 LIKE 값을 % 문자와 바인딩하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-16 16:59:03682검색

How to Bind LIKE Values with the % Character in PDO?

PDO에서 % 문자로 LIKE 값 바인딩

PDO 기반 SQL 쿼리에서는 % 와일드카드 문자가 포함된 LIKE 값을 바인딩해야 하는 경우가 흔합니다. 이러한 값을 바인딩하면 SQL 주입 방지가 보장됩니다. 그러나 이를 수행하기 위한 구문은 혼란스러울 수 있습니다.

LIKE '%'를 사용한 쿼리: 바인딩 고려 사항

쿼리를 고려하십시오.

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

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