2012-05-04 23 views
0

SQLSRVクエリが実行されないのはなぜですか?SQLSRVクエリが実行されないのはなぜですか?

私の問題が誰にも分かりません。私は何が間違っているのか分かりません、それは私に働いているように見えます。

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

私はかなりここにロジックをたどることはできませんが、私はこの問題は、一番上の行ということだと思う:

$datein_qr2=sqlsrv_query($dbconnect,$datein_q2,$params); 

がクエリを実行している - I thinkあなたがしたいことは、一番上のクエリを初期化し、ifステートメントで適切なものを実行することです。

$datein_qr1; 

sqlsrv_query行をifステートメント内に移動する必要があります。また

、if文第三は、これまで到達できません:あなたはすでにdateinとdateoutは、前の2つのif文にはnullかどうかを確認するためにチェックしている

else if ($datein===null&&$dateout===null) 

+0

ネヴァーマインドで試すことができます。ありがとうございました。 –

+0

問題の内容を尋ねることはできますか? – andrewsi

+0

私の挿入クエリには列が表示されている問題がありました。修正して移動したときに機能しました。 –

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(); 
} 
関連する問題