【问题标题】:Working with possible null value in the where clause of a PDO query在 PDO 查询的 where 子句中使用可能的空值
【发布时间】:2013-09-16 23:36:08
【问题描述】:

我有一个如下所示的 SQL 查询:

$stmt = $dbh->prepare("SELECT userID FROM User WHERE areaCode=? AND contactNo=?");
$stmt->bindValue(1, $areaCode ? $areaCode : null, PDO::PARAM_INT);
$stmt->bindValue(2, $contactNo, PDO::PARAM_INT);
$stmt->execute();

当$areaCode 为null 时,此查询将失败,因为areaCode=null 需要使用areaCode IS NULL 进行测试。是否仍然可以对此类查询进行参数化?

【问题讨论】:

  • 使用 COALESCE 或 IFNULL 会有所帮助

标签: php mysql pdo null conditional-statements


【解决方案1】:

您可以通过<=> 运算符来做到这一点(即参数化):

$stmt = $dbh->prepare("SELECT userID FROM User WHERE areaCode <=> ? AND contactNo=?");

【讨论】:

  • 如果不赞成,请发表评论。 &lt;=&gt; 是一个安全的空比较运算符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2018-08-14
  • 2012-05-05
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
相关资源
最近更新 更多