我正在整理我的网站,但我遇到了破解的问题 如果声明在foreach声明中, 我希望当一个学生尝试选择他/她已经选择的工作时,if()失败并从WHOLE foreach()循环中断,这是我的代码,if()内部的中断只会打破if (),而不是整个foreach 请帮帮我。 谢谢
foreach($_POST['JobId'] AS $i){
$sqlCheckingBeofrAdding ="SELECT * FROM JobsLists WHERE JobId = '".$i."' AND SSU = '".$SSU."' ";
$rs = mysqli_query($dbCIE ,$sqlCheckingBeofrAdding);
$row1 = mysqli_fetch_assoc($rs);
if($row1 > 0){
echo "You Already Have this Job In your List";
break;
}
//insert into junction table..
$sqlUpdate = "UPDATE Jobs SET NoStudent=NoStudent-1 WHERE JobId = '" . $i . "'";
$resultUpdate = mysqli_query($dbCIE,$sqlUpdate) or die(mysqli_error($dbCIE));
$sqlInsert ="INSERT INTO JobsLists(`JobID` , `SSU`) VALUES(".$i.",'".$SSU."' )";
$MyQuery= mysqli_query($dbCIE, $sqlInsert) or die(mysqli_error($dbCIE));
}
答案 0 :(得分:1)
如果您的查询只返回单个学生记录而不是使用return
,那么这将不会执行循环内的其他代码。
如果您的查询返回多个学生记录,则可以使用continue
对于第1点:
if($row1 > 0){
echo "You Already Have this Job In your List";
return;
}
第2点:
if(condition){
echo "You Already Have this Job In your List";
continue;
}
答案 1 :(得分:0)
您可以使用break;
或return;
(如果这是一个功能。)如果您需要代码,请告诉我。
答案 2 :(得分:0)
break statement in PHP接受数字参数。
尝试将break;
更改为break 2;
或使用return;
答案 3 :(得分:0)
php手册说:
break结束当前for,foreach,while,do-while或switch结构的执行。
我认为您的break
没有突破if
。我怀疑你的代码存在不同的问题。
答案 4 :(得分:0)
休息不会打破ifs。这就是语言的工作方式。
确保在if之前和之后有一个调试行而不是简单的MySQL操作。这似乎是代码的问题。
例如,在if之前和之后添加一些回声线,你就可以更好地了解发生了什么。
代码本身似乎有很多问题: 1 - 您不需要检索所有字段(选择*)以查看是否存在至少一个条目。这是对数据库层的误用。
2 - 如果您需要检查是否存在一个条目,请将LIMIT 1添加到SQL查询中。这将避免MySQL扫描整个表,以防查询没有使用任何唯一键,这很可能。
3-mysqli_fetch_assoc返回一个关联数组,但是你将数组与“> 0”进行比较。你能确认Array()> 0?
4 - 你似乎正在使用camelCased变量,但是当你突然有$ MyQuery时,它应该是$ myQuery以匹配你正在使用的约定。
5 - 您将查询结果存储在名为$ MyQuery的变量中。这是一种不好的做法,因为变量名称应该描述它包含的内容。因此,您将要像第一次查询中那样将其称为$ myResult或$ rs。
6 - SQL语句中使用的所有变量都不会被转义。
使用rubber duck technique仔细检查您的代码,我相信您会发现问题与if / break无关;但对其他事情。不要冒犯,但这段代码似乎很不成熟。