PHP의 PDO 준비 문: MySQL LIKE 쿼리 관련 문제
MySQL을 사용하는 PHP의 PDO 클래스는 매개변수화된 쿼리로 SQL 문을 실행하기 위한 메커니즘을 제공합니다. , 보안과 성능을 향상시킵니다. 그러나 사용자는 LIKE 쿼리를 사용할 때 어려움을 겪을 수 있습니다.
문제: PDO 준비된 문이 LIKE 쿼리로 결과를 반환하지 않습니다
다음과 유사한 쿼리를 실행하려고 할 때 PDO 사용:
<code class="mysql">SELECT * FROM hs WHERE hs_text LIKE "%searchTerm%"</code>
결과가 반환되지 않을 수도 있습니다.
해결책: 올바른 매개변수화
문제는 잘못된 매개변수화에 있습니다. 검색어의 PHP에서 준비된 문은 다른 구문이 필요한 명명된 자리 표시자를 사용합니다. LIKE 쿼리에 대한 올바른 매개 변수화는 다음과 같습니다.
<code class="php">$prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
설명:
준비된 문은 쿼리에서 데이터를 분리하고 자리 표시자를 사용합니다. 따라서 검색어를 큰따옴표로 묶거나 문자열 연결을 수행할 필요가 없습니다.
기타 일반적인 실수:
<code class="php">WHERE hs_text LIKE :searchTerm $ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"')); // Incorrect</code>
<code class="php">WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\') $ret = $prep->execute(array($searchTerm)); // Incorrect</code>
사용 올바른 매개변수화를 사용하면 PHP에서 PDO 준비 문을 사용하여 LIKE 쿼리를 성공적으로 실행할 수 있습니다.
위 내용은 PDO 준비 문이 LIKE 쿼리로 결과를 반환하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!