我正在运行查询
$Health = mssql_query("Select
*
from
Health
where
HEA_ID = '$HEA_ID'
");
然后在此处捕获其中一个字段:
$HEA_DocsOnFile = mssql_result($Health,0,'HEA_DocsOnFile');
该字段HEA_DocsOnFile
是一个bit
sql server
我怎么知道HEA_DocsOnFile
是 aNULL
还是 a 0
?
不幸的是,mssql_result
返回相同的值NULL
和0
!
我也试过:
$HEA_DocsOnFile = is_null(mssql_result($Health,0,'HEA_DocsOnFile')) ? null : mssql_result($Health,0,'HEA_DocsOnFile');
确保设置$HEA_DocsOnFile
为null
稍后以这种方式检查复选框是否为 0 且 NOT NULL:
<?php if($HEA_DocsOnFile===0) { echo 'checked="checked"' ; }?>
即使它确实为空(至少正如 sql server 所说),它仍然会检查复选框,认为它是0
根据马克的建议更新
,我明确选择了所有列而不是做select *
我做了:
select
....
,[HEA_POLST]
,[HEA_MOST]
,[HEA_DNR]
,isnull(HEA_DocsOnFile,2) HEA_DocsOnFile
from...........
我知道那HEA_DocsOnFile
是现在2
但是,在测试时:
<?php if($HEA_DocsOnFile==1) { echo 'checked="checked"' ; }?>
它实际上检查了这个框!
我究竟做错了什么?
我实际上做了一个var_dump($HEA_DocsOnFile);
并且它返回了int(1)
这个怎么可能?它在 sql server 中为NULL !
我什至做了:
select............
,isnull(HEA_DocsOnFile,'2') HEA_DocsOnFile
将类型从更改int
为string
,然后做了一个var_dump
,它仍然返回 int(1)