gpt4 book ai didi

php - MySQL PDO WHERE 语句中的 NULL

转载 作者:行者123 更新时间:2023-11-29 05:12:15 25 4
gpt4 key购买 nike

$id 可以但不一定是 NULL。除了使用 PHP 测试 $id 是否为 NULL 并将查询更改为 IS NULL 之外,如何执行此查询?

$stmt = $db->prepare("SELECT * FROM t WHERE id=?");
$stmt->execute([$id]);
return $stmt->fetchAll();

根据 https://stackoverflow.com/a/1391801/1032531 ,我尝试了 bindValue(':id', null, PDO::PARAM_INT);,但出现错误 Fatal error: Cannot pass parameter 2 by reference

我也试过 $stmt->bindParam(':id', $id, PDO::PARAM_NULL);,虽然没有错误,但我没有得到任何结果。

最佳答案

你要找的是ANSI标准IS NOT DISTINCT FROM运算符(operator)。这对 NULL IS NOT DISTINCT FROM NULL 返回真.

MySQL 支持使用 <=>比较运算符。所以你可以使用:

SELECT *
FROM t
WHERE id <=> ?

这假设您实际上想要 NULL id 的值当你比较 NULL .通常,如果参数是 NULL,所需的逻辑是获取所有行。 :

WHERE id = ? OR (? IS NULL)

或:

WHERE id = COALESCE(?, id)

关于php - MySQL PDO WHERE 语句中的 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37774631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com