PHP PDO 데이터베이스 클래스에서 "="에서 "IS"로 연산자를 변경하는 표준 또는 최선의 방법이 있습니까? 전달할 NULL 또는 아닙니다. 내가 의미하는 바의 예가 여기있다.변수 연산자가 필요한 MySQL 쿼리 작성하기 PHP PDO
두 변수가 있습니다. 일치하는 결과의 수가 필요합니다. 때로는 하나 또는 둘 모두의 변수가 NULL 일 수 있습니다. 그러나 MySQL은 NULL을 찾기 위해 다른 연산자가 필요합니다 (IS NULL).
나는 현재 단지 운영자에 대한 또 다른 변수를 만드는거야 내가 쿼리를 빌드 할 때 나는 그것으로 너무에 주입 :
// First create a variable "=" or "is" depending on whether var1 and var2 are NULL or not
if($var1 == NULL) $var1_operator = "IS";
else $var1_operator = "=";
if($var2 == NULL) $var2_operator = "IS";
else $var2_operator = "=";
// Build the query
$query = 'SELECT count(*) as count FROM table
WHERE var1 '.$var1_operator.' :var1 AND var2 '.$var2_operator.' :var2';
// Conduct the query
$prepare = $db_connection->prepare($query);
$prepare->bindValue(':var1', $var1, PDO::PARAM_STR);
$prepare->bindValue(':var2', $var2, PDO::PARAM_STR);
$prepare->execute();
$results = $prepare->fetch();
이 작업을 수행하는 또 다른 방법이 있나요? 이것은 값이 NULL이고 실제 문자열이 아닌 경우에도 PARAM_STR을 사용하여 bindValue에 적용됩니다. 쿼리가 올바른 값 개수를 반환합니다. 그것을하기위한 더 나은 실천이 있는지 확실하지 않습니다.
이것은 PDO가있는 최상의 솔루션입니다. – Gunaseelan