【发布时间】:2017-12-07 07:22:10
【问题描述】:
当我不知道要传递的值是否为 NULL 时,PHP PDO 数据库类中是否有任何标准或最佳方法可以将运算符从“=”更改为“IS”。这是我的意思的一个例子。
我有两个变量。我想要计算匹配的结果。有时,一个或两个变量可以为 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 绑定值。查询返回正确的值计数。只是不确定是否有更好的做法。
【问题讨论】:
-
这是使用 PDO 的最佳解决方案