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、行がない場合、ループを終了し、残りのコードに進まないことです。ただし、行がある場合は、続行して挿入クエリを実行します。前もって感謝します。

4

4 に答える 4

1

あなたの言いたいことは、ステートメント内のINSERT その項目に対してを実行したくないということだと思います。foreachその場合は、 which を変更exit;して、 continue;PHP にループ内の現在の項目のコードの実行を停止し、ループ内の 1 つの要素を進めて、最初からやり直すように指示します。

以下も変更する必要があります。

$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');
于 2013-02-11T13:17:49.573 に答える
1

continue;代わりに使用するexit;と、ループ内の次の項目にスキップします。ループを一度だけ終了したい場合はbreak;、代わりに使用しますexit;

于 2013-02-11T13:22:08.527 に答える
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を使ってみる

于 2013-02-11T13:17:46.643 に答える
0

foreachループを完全に中止したい場合は、次を使用しbreakます。

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

現在の反復コードforeachの残りを破棄して、ループの次の反復に進みたい場合は、次を使用します。foreachcontinue

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

exit完全な php スクリプトを終了するために使用され、 と同義dieです。

于 2013-02-11T13:22:56.240 に答える