2013-02-11 175 views
0

你能幫我解決這個問題嗎?我有這樣的代碼:錯誤時繼續執行代碼

foreach ($mat_desc as $mat_key => $materials) { 
    $mat = explode(' | ', $materials); 
    $mat_d = $mat[0]; 
    $mat_u = $mat[1]; 
    $m = mat_id_from_mat_desc($mat_d, $mat_u); 

    $cur = mysql_result(mysql_query('SELECT `req_id` FROM `requestdetails` JOIN `request` USING(`req_id`) WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.$m.'" AND `req_qty` <> `current_rec_qty` ORDER BY `req_id` DESC'), 0); 
    echo $cur; 
    if(mysql_num_rows($cur) == 0){ 
     exit; 
    } 

    mysql_query ("INSERT INTO `receive` (`proj_id`,`rec_code`) VALUES ('$proj_id','$rec_code')");  

    $rec_id = mysql_insert_id();  

我想實現的是,當$cur沒有任何行會退出循環,而不是繼續執行代碼的其餘部分。但是如果它有任何行,它將繼續並執行插入查詢。先謝謝你。

回答

0

嘗試:

$cur = mysql_query('SELECT `req_id` FROM `requestdetails` JOIN `request` USING(`req_id`) WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.$m.'" AND `req_qty` <> `current_rec_qty` ORDER BY `req_id` DESC'); 

echo $cur; 
if(mysql_num_rows($cur) == 0){ 
    exit; 
} 

而且,你不應該使用mysql_擴展來。嘗試使用PDO

+0

它的工作先生!非常感謝你! :] – chris 2013-02-11 13:26:55

1

我假設你的意思是,你要在foreach聲明該項目不執行INSERT。如果是這樣,請將exit;更改爲continue;,它將指示PHP停止執行循環中當前項目的代碼,在循環中前移一個元素並再次從頂部開始。

你也應該改變:

$cur = mysql_result(mysql_query('SELECT `req_id` FROM `requestdetails` JOIN `request` USING(`req_id`) WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.$m.'" AND `req_qty` <> `current_rec_qty` ORDER BY `req_id` DESC'), 0); 

到:

$cur = mysql_query('SELECT `req_id` FROM `requestdetails` JOIN `request` USING(`req_id`) WHERE `proj_id` = "'.$proj_id.'" AND `mat_id` = "'.$m.'" AND `req_qty` <> `current_rec_qty` ORDER BY `req_id` DESC'); 
+0

沒有先生。插入查詢是針對整個循環的。如果一個項目在我的if語句中滿足條件,它將不會繼續到代碼的其餘部分。 – chris 2013-02-11 13:21:27

+0

@chris你只想退出嗎?或者你想「休息」,而不是停止循環的進一步迭代,但允許你在它之外做一些事情。 – 2013-02-11 13:22:20

1

如果使用continue;代替exit;它會跳到循環中的下一個項目。如果你想一旦結束循環,併爲所有你會代替exit;

0

如果你想中止foreach迴路全部採用break使用break;:如果你想前進到下一個

if(mysql_num_rows($cur) == 0){ 
    break; 
} 

foreach循環迭代,放棄當前foreach迭代代碼的其餘部分,使用continue

if(mysql_num_rows($cur) == 0){ 
    continue; 
} 

exit用於結束完整的php腳本,並且是die的同義詞。

相關問題