你能帮我解决这个问题吗?我有这个代码:
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
没有任何行时,它将退出循环并且不会继续执行其余代码。但如果它确实有任何行,它将继续并执行插入查询。预先感谢您。
最佳答案
我假设您的意思是您不想在 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');
关于php - false 时继续执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14812783/