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.

Кроме того, третий, если заявление никогда не будет достигнуто:

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

Вы уже проверять, если datein и dateout являются недействительными на двух предыдущих если заявления.

+0

Nevermind Я нашел этот вопрос. Спасибо. –

+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(); 
} 
Смежные вопросы