为什么我的SQLSRV查询没有执行?
它没有回应任何类似它应该在IF ELSE失败的人有没有看到我的问题是什么?我无法弄清楚什么是错的,它看起来应该对我有用。
PHP代码:
/* IF NULL EXISTS of DATEIN or DATEOUT then UPDATE else INSERT*/
$datein_s="SELECT TOP 1 datein FROM clocked WHERE datein IS NULL AND userid=? ORDER BY datein DESC";
$datein_sr=sqlsrv_query($dbconnect,$datein_s,$params);
$datein=sqlsrv_fetch($datein_sr);
$datein_q1="UPDATE clocked SET datein=GETDATE() WHERE EXISTS(SELECT TOP 1 datein FROM clocked WHERE datein IS NULL AND userid=? ORDER BY datein DESC);";
$datein_qr1=sqlsrv_query($dbconnect,$datein_q1,$params);
$datein_q2="INSERT INTO clocked(datein) VALUES(GETDATE(),?);";
$datein_qr2=sqlsrv_query($dbconnect,$datein_q2,$params);
$dateout_s="SELECT TOP 1 dateout FROM clocked WHERE dateout IS NULL AND userid=? ORDER BY dateout DESC";
$dateout_sr=sqlsrv_query($dbconnect,$dateout_s,$params);
$dateout=sqlsrv_fetch($dateout_sr);
$dateout_q1="UPDATE clocked SET dateout=GETDATE() WHERE EXISTS(SELECT TOP 1 dateout FROM clocked WHERE dateout IS NULL AND userid=? ORDER BY dateout DESC);";
$dateout_qr1=sqlsrv_query($dbconnect,$dateout_q1,$params);
if($datein===null)
{
$datein_qr1;
}
else if ($dateout===null)
{
$dateout_qr1;
}
else if ($datein===null&&$dateout===null)
{
$datein_qr1;
}
else if ($datein!==null&&$dateout!==null)
{
$datein_qr2;
}
else
{
echo "ERROR your query may be broken!";
}
/* END IF */
答案 0 :(得分:0)
我不能完全遵循这里的逻辑,但我认为问题在于顶部的线条:
$datein_qr2=sqlsrv_query($dbconnect,$datein_q2,$params);
正在运行查询 - 我认为您想要做的只是在顶部初始化查询,然后在if语句中运行相应的查询,其中包含:
$datein_qr1;
您需要将sqlsrv_query行移到if语句中。
此外,永远不会达到第三个if语句:
else if ($datein===null&&$dateout===null)
您已经在检查前两个if语句中datein和dateout是否为空。
答案 1 :(得分:0)
奇怪的代码片段: - )
你可以试试这个
if($datein===null)
{
$datein_q1="UPDATE clocked SET datein=GETDATE() WHERE EXISTS(SELECT TOP 1 datein FROM clocked WHERE datein IS NULL AND userid=? ORDER BY datein DESC);";
sqlsrv_query($dbconnect,$datein_q1,$params);
}
或使用闭包(> = PHP 5.3)
$datein_q1="UPDATE clocked SET datein=GETDATE() WHERE EXISTS(SELECT TOP 1 datein FROM clocked WHERE datein IS NULL AND userid=? ORDER BY datein DESC);";
$caller= function($query, $params = array()) use($dbconnect) {
sqlsrv_query($dbconnect,$query,$params);
};
if($datein===null)
{
$caller->__invoke($datein_q1, array();
}