programing

PDO에서 LIKE 쿼리 구현

telebox 2023. 10. 4. 21:14
반응형

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

반응형