gpt4 book ai didi

php - 如果 foreach 中存在行则不起作用

转载 作者:行者123 更新时间:2023-11-29 10:17:13 27 4
gpt4 key购买 nike

我正在通过ajax提交html数据数组。我的表单如下所示:

<form id="myForm">
<label for="sel1">Select Class:</label>
<select class="form-control" name="class_id" id="class_id">
<?php
$query=$con->query("SELECT * FROM class ORDER BY id ASC") or die($con->error);
while($row=$query->fetch(PDO::FETCH_ASSOC)){?>
<option value="<?php echo $row['id']?>"><?php echo $row['class_name']?></option>
<?php } ?>
</select>
<br />
<label>Add Section: </label>
<label class="checkbox-inline"><input type="checkbox" name="section_name" value="A">A</label>
<label class="checkbox-inline"><input type="checkbox" name="section_name" value="B">B</label>
<label class="checkbox-inline"><input type="checkbox" name="section_name" value="C">C</label>
<br />
</form>

数组和输入已按以下方式传递给 php

<script>
$("#submit").click(function(){
var class_id = $("#class_id").val();
var section_name = [];
$("input[name='section_name']:checked").each(function(){
section_name.push(this.value);
});
$.ajax({
url: 'insert_section.php',
type: 'post',
data: {class_id:class_id,section_name:section_name},
success: function(data){
alert(data);
$('#myForm')[0].reset();
}
});
});
</script>

我正在尝试在行存在或不存在的情况下回显消息。但这不起作用。下面的代码有什么错误。也许 foreach 子句引起了问题。请帮忙

if(isset($_POST["section_name"])){
foreach ($_POST["section_name"] AS $key => $item) {
$query =$con->prepare("SELECT class_id, section_name FROM section WHERE class_id= ':class_id' && section_name ':section_name')");
$query->bindParam(':section_name',$_POST["section_name"][$key]);
$query->bindParam(':class_id', $_POST["class_id"]);
$query->execute();
$count = $query->fetchColumn();
if ($count === 1)
{
echo "Section found";
}
else
{
echo "Section is not found";
}
}
}

我的数据库看起来像

enter image description here

最佳答案

不要在查询中包含引号 '。您也可以在循环中直接使用 $item 变量而不是 $_POST["section_name"][$key] 。更改您的代码如下:

if(isset($_POST["section_name"])){
foreach ($_POST["section_name"] AS $key => $item) {
$query =$con->prepare("SELECT class_id, section_name FROM section WHERE class_id= :class_id && section_name = :section_name)");
$query->bindParam(':section_name',$item);
$query->bindParam(':class_id', $_POST["class_id"]);
$query->execute();
$count = $query->fetchColumn();
if ($count === 1)
{
echo "Section found";
}
else
{
echo "Section is not found";
}
}
}

因为你必须计算你的结果。更改您的查询如下:

$query =$con->prepare("SELECT COUNT(class_id) as total_ids FROM section WHERE class_id= ':class_id' && section_name ':section_name')");

关于php - 如果 foreach 中存在行则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49954098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com