2013-02-11 4 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_ 확장을 사용하지 않아야합니다.

+0

그것은 선생님! 대단히 감사합니다! :] – chris

1

PDO를 사용해보십시오 내가 무엇을 의미하는 것은 당신이 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

+0

@chris 종료 하시겠습니까? 아니면'중단;을 원하지만 반복의 반복을 더 이상 멈추지 않고 그 밖의 것을 할 수있게하고 싶습니까? –

1

당신이 루프의 다음 항목으로 건너 뜁니다 exit; 대신에 continue;를 사용하는 경우. 한 번 루프를 종료 할 당신이 완전히 break 사용하는 foreach 루프를 중단하려면 모두를 위해 당신은 exit;

0

대신에 break;을 사용하는 경우 : 당신이 다음에 진출하려면

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

foreach 루프의 반복, 현재 foreach 반복 코드의 나머지 부분을 폐기, continue 사용

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

exit은 완전한 PHP 스크립트를 끝내기 위해 사용되며 die과 동의어입니다.

관련 문제