prepare('SELECT * FROM foo WHERE bar = :bar'); $stmt->execut-6ren">
gpt4 book ai didi

php - 在 PDO 中绑定(bind) "not null"?

转载 作者:可可西里 更新时间:2023-11-01 06:35:47 24 4
gpt4 key购买 nike

我最近发现您可以在 PDO 中绑定(bind)空值:

$stmt = $db->prepare('SELECT * FROM foo WHERE bar = :bar');
$stmt->execute(array(':bar'=>null));
$foo = $stmt->fetchAll(PDO::FETCH_OBJ);

这将成功地从数据库中获取所有 foo,其中 bar 列为空。

但是,我现在想做相反的事情。我想获取 bar 列为 not null 的所有列。

我知道我可以简单地将 bar = :bar 替换为 bar IS NOT NULL。但是,我想避免这种情况,而是通过准备好的语句来完成,因为有时我必须动态构建查询字符串并且必须手动完成会增加很多额外的工作。

这可能吗?

最佳答案

您不能绑定(bind)“NOT NULL”。您只能绑定(bind)。 “IS NOT NULL”不是一个值,它是完全不同的查询语法。您只需动态构建查询,值绑定(bind)无法帮助您:

$query = 'SELECT ... WHERE ';
if (/* condition is NOT NULL */) {
$query .= 'foo IS NOT NULL';
$stmt = $db->prepare($query);
} else {
$query .= 'foo = :foo';
$stmt = $db->prepare($query);
$stmt->bindValue('foo', $foo);
}
$stmt->execute();

关于php - 在 PDO 中绑定(bind) "not null"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33033961/

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