2012-05-04 5 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); 

가 쿼리를 실행 - 나는 당신이하고 싶은 것은 상단의 쿼리를 초기화 한 다음 if 문에서 적절한 쿼리를 실행하는 것입니다.

$datein_qr1; 

sqlsrv_query 행을 if 문 내부로 이동해야합니다. 또한

, if 문 세 번째는 지금까지 도달 할 수없는 것입니다 : 당신은 이미 datein 및 dateout는 앞의 두 경우 제표에 null이 있는지 확인하고

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

. 당신이 시도 할 수

:-)

+0

폐쇄 (> = PHP 5.3)이. 고맙습니다. –

+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); 
} 

또는 신경 끄시 고 내가 문제를 발견

$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(); 
} 
관련 문제