Php 如何避免SQL查询检查为NULL时出现误报?

Php 如何避免SQL查询检查为NULL时出现误报?,php,sql,sql-server,Php,Sql,Sql Server,如何避免SQL查询检查为NULL时出现误报 我似乎已经通过添加if(sqlsrv\u has\u rows语句纠正了我的误报 PHP: 我似乎通过添加if(sqlsrv_has_rows)语句纠正了我的误报。我似乎通过添加if(sqlsrv_has_rows)语句纠正了我的误报。在尝试从任何字段(在php中,而不是SQL中)提取任何值之前,请检查结果集中的行数。NULL=“Unknown value”.非真/假/空。项文本默认为空。如果($item!==NULL)如果NULL不为空,那么为什么这

如何避免SQL查询检查为NULL时出现误报


我似乎已经通过添加
if(sqlsrv\u has\u rows
语句纠正了我的误报

PHP:


我似乎通过添加if(sqlsrv_has_rows)语句纠正了我的误报。

我似乎通过添加if(sqlsrv_has_rows)语句纠正了我的误报。

在尝试从任何字段(在php中,而不是SQL中)提取任何值之前,请检查结果集中的行数。NULL=“Unknown value”.非真/假/空。
文本默认为空。如果($item!==NULL)如果NULL不为空,那么为什么这是日期/日期时间字段唯一可接受的值?@Philipdatetime接受未设置的值,即:未知值:NULL@Philip建议如何设置空datetimes?在尝试从任何字段中提取任何值之前,请检查结果集中的行数(在php中,不是SQL)。NULL=“未知值”。非真/假/空。
item
TEXT默认为NULL。if($item!==NULL)如果NULL不为空,那么为什么这是日期/日期时间字段唯一可接受的值?@Philipdatetime接受未设置的值,即:未知值:NULL@Philip您建议如何设置空的日期时间?
/*

IF select of 1900 datein has rows
update datein

IF select of 1900 dateout has rows
update dateout

IF select of 1900 datein AND dateout no rows
insert datein

*/
$datein_s="SELECT TOP 1 datein FROM clocked WHERE datein='1900-01-01 00:00:00' AND userid=? ORDER BY datein DESC";
$datein_sr=sqlsrv_query($dbconnect,$datein_s,$params) or die("Error datein:".print_r(sqlsrv_errors(),true));
$datein=sqlsrv_fetch($datein_sr);
if(sqlsrv_has_rows($datein_sr)===FALSE)
{
$datein="NOROWS";
}
else
{
$datein="HASROWS";
}

$dateout_s="SELECT TOP 1 dateout FROM clocked WHERE dateout='1900-01-01 00:00:00' AND userid=? ORDER BY dateout DESC";
$dateout_sr=sqlsrv_query($dbconnect,$dateout_s,$params) or die("Error dateout:".print_r(sqlsrv_errors(),true));
$dateout=sqlsrv_fetch($dateout_sr);
echo $dateout;
if(sqlsrv_has_rows($dateout_sr)===FALSE)
{
$dateout="NOROWS";
}
else
{
$dateout="HASROWS";
}

if($datein==="HASROWS")
{
$datein_q1="UPDATE clocked SET datein=GETDATE() WHERE EXISTS(SELECT TOP 1 datein FROM clocked WHERE datein='1900-01-01 00:00:00' AND userid=? ORDER BY datein DESC);";
$datein_qr1=sqlsrv_query($dbconnect,$datein_q1,$params) or die("Error update datein:".print_r(sqlsrv_errors(),true));
echo "Datein and out are HASROWS";
}
else if ($dateout==="HASROWS")
{
$dateout_q1="UPDATE clocked SET dateout=GETDATE() WHERE EXISTS(SELECT TOP 1 dateout FROM clocked WHERE dateout='1900-01-01 00:00:00' AND userid=? ORDER BY dateout DESC);";
$dateout_qr1=sqlsrv_query($dbconnect,$dateout_q1,$params) or die("Error update dateout:".print_r(sqlsrv_errors(),true));
echo "Dateout NOROWS";
}
else if ($datein==="NOROWS"&&$dateout==="NOROWS")
{
$datein_q2="INSERT INTO clocked(datein,userid) VALUES(GETDATE(),?);";
$datein_qr2=sqlsrv_query($dbconnect,$datein_q2,$params) or die("Error insert datein:".print_r(sqlsrv_errors(),true));
echo "Datein and Dateout NOROWS";
}
else
{
echo "ERROR your query may be broken!";
}