반응형
PDO에서 LIKE 쿼리 구현
PDO에서 LIKE를 구현할 때 문제가 발생합니다.
다음과 같은 문의가 있습니다.
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'";
$params = array($var1, $var2);
$stmt = $handle->prepare($query);
$stmt->execute($params);
확인했습니다.$var1
그리고.$var2
검색하고 싶은 단어가 모두 포함되어 있습니다. 일부 쿼리가 있기 때문에 PDO가 잘 작동합니다.SELECT
INSERT
그들은 효과가 있어요, 단지 제가 잘 모르는 것 뿐이에요.LIKE
여기 PDO에서.
결과가 반환되지 않습니다.도미$query
통사적으로 맞는 말입니까?
당신은 다음을 포함해야 합니다.%
에 있는 징후들$params
, 쿼리에 없음:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?";
$params = array("%$var1%", "%$var2%");
$stmt = $handle->prepare($query);
$stmt->execute($params);
이전 코드에서 생성된 쿼리를 보면 다음과 같은 것을 볼 수 있을 것입니다.SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
, 준비된 문장은 이미 인용된 문자열 안에 당신의 값을 인용하고 있기 때문입니다.
다음을 사용하기만 하면 됩니다.
$query = "SELECT * FROM tbl WHERE address LIKE CONCAT('%', :var1, '%')
OR address LIKE CONCAT('%', :var2, '%')";
$ar_val = array(':var1'=>$var1, ':var2'=>$var2);
if($sqlprep->execute($ar_val)) { ... }
아니요, 준비된 자리 표시자를 인용할 필요는 없습니다.또한 변수 내부에 % 표시를 포함합니다.
LIKE ?
그리고 변수에서:%string%
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?";
$params = array("%$var1%", "%$var2%");
$stmt = $handle->prepare($query);
$stmt->execute($params);
아래 예시를 보실 수 있습니다.
$title = 'PHP%';
$author = 'Bobi%';
// query
$sql = "SELECT * FROM books WHERE title like ? AND author like ? ";
$q = $conn->prepare($sql);
$q->execute(array($title,$author));
효과가 있기를 바랍니다.
언급URL : https://stackoverflow.com/questions/11117134/implement-like-query-in-pdo
반응형
'programing' 카테고리의 다른 글
C++ 컴파일러로 사용할 MinGW 파일 (0) | 2023.10.04 |
---|---|
jquery live hover (0) | 2023.10.04 |
zip 파일 생성/추출 및 기존 파일/내용 덮어쓰기 (0) | 2023.09.24 |
Android용 모바일 웹 사이트(응용프로그램 아님)에서 WhatsApp의 공유 링크 (0) | 2023.09.24 |
GOobject System은 왜 만들어졌습니까? (0) | 2023.09.24 |