PHP PDO 준비 문 - MySQL LIKE 쿼리
문제:
다음을 사용하여 MySQL LIKE 쿼리를 실행할 때 PHP의 PDO, 검색 결과가 없습니다.
쿼리:
<code class="sql">SELECT hs.hs_pk, hs.hs_text, hs.hs_did, hd.hd_did, hd.hd_text, hv.hv_text, hc.hc_text FROM hs LEFT JOIN hd ON hs.hs_did = hd.hd_did LEFT JOIN hd ON hd.hd_vid = hv.hv_id LEFT JOIN hc ON hd.hd_pclass = hc.hc_id WHERE hs.hs_text LIKE "%searchTerm%" LIMIT 25;</code>
PHP 코드:
<code class="php">$sql = 'SELECT hs.hs_pk, hs.hs_text, hs.hs_did, hd.hd_did, hd.hd_text, hv.hv_text, hc.hc_text FROM hs LEFT JOIN hd ON hs.hs_did = hd.hd_did LEFT JOIN hd ON hd.hd_vid = hv.hv_id LEFT JOIN hc ON hd.hd_pclass = hc.hc_id WHERE hs.hs_text LIKE :searchTerm LIMIT 25'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));</code>
해결책:
실수는 Execute() 메소드의 :searchTerm 매개변수에 할당된 값에 있습니다. 준비된 문을 사용할 때는 큰따옴표가 필요하지 않습니다.
수정된 PHP 코드:
<code class="php">$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
설명:
준비된 문은 데이터를 처리합니다. 쿼리와 별도로. 문자열 교체를 수행하지 않습니다. 따옴표는 쿼리에 값을 직접 삽입하는 경우에만 추가됩니다.
위 내용은 MySQL LIKE 쿼리가 포함된 PHP PDO 준비 문이 결과를 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!