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;
}