PHP의 PDO 준비 문: MySQL LIKE 쿼리 관련 문제
MySQL을 사용하는 PHP의 PDO 클래스는 매개변수화된 쿼리로 SQL 문을 실행하기 위한 메커니즘을 제공합니다. , 보안과 성능을 향상시킵니다. 그러나 사용자는 LIKE 쿼리를 사용할 때 어려움을 겪을 수 있습니다.
문제: PDO 준비된 문이 LIKE 쿼리로 결과를 반환하지 않음
다음과 유사한 쿼리를 실행하려고 할 때 PDO 사용:
SELECT *
FROM hs
WHERE hs_text LIKE "%searchTerm%"
사용자는 결과가 반환되지 않을 수도 있습니다.
해결책: 올바른 매개변수화
문제는 검색어의 매개변수가 잘못되었습니다. PHP에서 준비된 문은 다른 구문이 필요한 명명된 자리 표시자를 사용합니다. LIKE 쿼리의 올바른 매개변수화는 다음과 같습니다.
$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
설명:
준비된 문은 쿼리에서 데이터를 분리하고 자리 표시자를 사용합니다. 따라서 검색어를 큰따옴표로 묶거나 문자열 연결을 수행할 필요가 없습니다.
기타 일반적인 실수:
WHERE hs_text LIKE :searchTerm
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"')); // Incorrect
WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm)); // Incorrect
올바른 매개변수화를 사용하면 다음을 사용하여 LIKE 쿼리를 성공적으로 실행할 수 있습니다. PHP에서 PDO 준비문.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3