Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 错误时继续执行代码_Php_Mysql_Sql_Loops_For Loop - Fatal编程技术网

Php 错误时继续执行代码

Php 错误时继续执行代码,php,mysql,sql,loops,for-loop,Php,Mysql,Sql,Loops,For Loop,你能帮我做这个吗。我有以下代码: 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

你能帮我做这个吗。我有以下代码:

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();    
foreach($mat\u desc as$mat\u key=>$materials){
$mat=爆炸(“|”,$materials);
$mat_d=$mat[0];
$mat_=$mat[1];
$m=mat_id_from_mat_desc($mat_d,$mat_);
$cur=mysql\u结果(mysql\u查询(`requestdetails`JOIN`request`USING(`req\u id`)选择`req\u id``其中`proj\u id`='.$proj\u id.''和`mat\u id`='.$m.''和`req\u数量`current\u rec数量`ORDER BY`req\u id`DESC),0);
echo$cur;
if(mysql_num_rows($cur)==0){
出口
}
mysql_查询(“插入到`receive`(`proj_id`,`rec_code`)值(`proj_id',`rec_code');
$rec_id=mysql_insert_id();
我想要实现的是,当
$cur
没有任何行时,它将退出循环,而不会继续执行代码的其余部分。但如果它有任何行,它将继续并执行插入查询。请提前感谢。

尝试:

$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;
}
$cur=mysql\u query(`requestdetails`JOIN`request`使用(`req\u id`)从`requestdetails`JOIN`request`中选择`req\u id``,其中`proj\u id`='.$proj\u id'.`mat\u id`='.$m.''和`req\u qty``当前的订单由`req\u id`DESC获得');
echo$cur;
if(mysql_num_rows($cur)==0){
出口
}

另外,您不应该使用
mysql\uUcode>扩展。尝试使用我想您的意思是不希望对
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\u结果(mysql\u查询(`requestdetails`JOIN`request`使用(`req\u id`)从`requestdetails`JOIN`request`中选择`req\u id`',其中`proj\u id`='.$proj\u id.'',`mat id`='.$m.''和`req\u数量`current\u rec qty`ORDER BY`req\u id`DESC 0);
致:

$cur=mysql\u query(`requestdetails`JOIN`request`使用(`req\u id`)从`requestdetails`JOIN`request`中选择`req\u id``,其中`proj\u id`='.$proj\u id'.`mat\u id`='.$m.''和`req\u qty``当前的订单由`req\u id`DESC获得');

如果您使用
继续;
代替
退出;
它将跳到循环中的下一项。如果您想一次性结束循环,您将使用
中断;
代替
退出;
如果您想完全中止每个
循环,请使用
中断

if(mysql_num_rows($cur) == 0){
    break;
}
如果要进入
foreach
循环的下一次迭代,放弃当前
foreach
迭代代码的其余部分,请使用
continue

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

exit
用于结束整个php脚本,是
die

No sir的同义词。insert查询用于整个循环。如果一项满足If语句中的条件,它将不会继续执行其余代码。@chris您只想退出吗?还是想
中断;
,这将进一步停止er循环的迭代,但允许您在循环之外执行某些操作。
if(mysql_num_rows($cur) == 0){
    continue;
}