我正在运行查询
$Health = mssql_query("Select 
*
from
Health
where 
HEA_ID = '$HEA_ID'
");
然后在此处捕获其中一个字段:
$HEA_DocsOnFile = mssql_result($Health,0,'HEA_DocsOnFile');
该字段HEA_DocsOnFile是一个bitsql 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)