Php 通行证;是空的;作为sqlsrv查询的参数

Php 通行证;是空的;作为sqlsrv查询的参数,php,sql,sqlsrv,Php,Sql,Sqlsrv,我正在PHP5.3.27中使用sqlsrv驱动程序。如何将“is null”作为参数传递给查询。 所以相反 SELECT row_id FROM table WHERE name IS NULL 我可以用 SELECT row_id FROM table WHERE name = ? 嗯。。。是什么阻止您编写if/else子句 if($i_need_a_value) { $query = 'SELECT row_id FROM table WHERE name = ?'; } els

我正在PHP5.3.27中使用sqlsrv驱动程序。如何将“is null”作为参数传递给查询。 所以相反

SELECT row_id FROM table WHERE name IS NULL
我可以用

SELECT row_id FROM table WHERE name = ?

嗯。。。是什么阻止您编写if/else子句

if($i_need_a_value) {
    $query = 'SELECT row_id FROM table WHERE name = ?';
} else {
    $query = 'SELECT row_id FROM table WHERE name IS NULL';
}

通过以下查询,您可以检查特定列是否为null或是否包含somevalue

select row_id 
from table 
where (name IS NULL) or (name IS NOT NULL && name<>'');
选择行\u id
从桌子上
其中(名称为NULL)或(名称不为NULL&&name“”);

您可以使用case语句来解决可空性问题。一个巧妙的技巧是将连接与单行伪查询一起使用,以避免必须绑定值两次:

SELECT row_id 
FROM   table
JOIN   (SELECT ? AS param) dummy
WHERE  (name IS NULL AND param IS NULL) OR name = param

我自己想到了另一种方法

SELECT row_id FROM table WHERE ISNULL(name,-1)=?
如果您确定永远不会使用“-1”作为条件,那么这将起作用。只需在需要值时使用参数,在需要“为空”时使用“-1”。
但我想没有办法将“is null”作为参数传递

使用is null有什么错?在某些情况下,我需要检查其他情况下它是否为null-如果它是某个值。我想用一个带参数的查询来实现它。看看我的查询,告诉我这是否符合我们的目的。只是想知道这是否可能。如果不是-我想这就是解决问题的方法。好吧,现在我正在使用这个解决方案,我想我的问题的答案是,我无法检查您需要的空值
为空
(因为
=NULL
不能得到您期望的结果,请检查解释)。所以您要么需要这个简单的子句,要么需要一个相对复杂的查询。为了简单起见,我会选择这样的解决方案。您还可以插入运算符,如下所示:
$operator='='$query='从名称所在的表中选择行\u id'$运算符“?”为避免混淆,请注意:
等同于
=在where语句中使用时意味着不等于@giorgio:p据我所知,这不是我需要的。当页面加载时,我要么只需要看到“NULL”值,要么只需要看到特定的值。我不想让他们都检查我的编辑,我想这是你想要的@MaiorovYury