【问题标题】:PHP if condition doesn't workPHP 如果条件不起作用
【发布时间】:2018-04-20 09:43:01
【问题描述】:

我的html表单

<form id="myForm">
    <label for="sel1">Select Class:</label>
    <select class="form-control" id="class_name">
    <?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>
    <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>
</form>

阿贾克斯

<script>
    $("#submit").click(function(){
        var class_id = $("#class_name").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},
            dataType: 'JSON',
            success: function(response){
                alert(response);
                $('#myForm')[0].reset();
                }
            });
    });
</script>

我通过 ajax 在数据库中插入数组数据。数据插入成功,未执行任何条件。当我尝试实现 if 条件时,它不起作用。以下代码有什么错误

<?php
include "connect.php";
$class_id = $_POST['class_id'];
$section_name = $_POST['section_name'];
$section_name = implode(",",$section_name);
$query=$con->query("SELECT * FROM section") or die($con->error);
while($row=$query->fetch(PDO::FETCH_ASSOC)){
    if(($class_id==$row['class_id'])&&($section_name==$row['section_name'])){
        echo json_encode('Section -'.$section_name.' has already assigned in '.$class_id);
    }
    else{
        $query2=$con->query("INSERT INTO section(class_id,section_name) VALUES('$class_id','$section_name')") or die($con->error);
    echo json_encode($section_name);
    }
}
?>

【问题讨论】:

  • 您是否收到错误消息?输出是什么?
  • 记录 class_id $row['class_id'] $section_name $row['section_name'] 中的内容并检查这是否是预期值
  • 由于我们不知道您的数据是什么样的,或者您想要什么行为,并且您没有提到发生的任何异常,我们无法真正说出问题所在 - 首先,我们不知道您认为什么是“错误”行为,以及您期望什么是“正确”行为。
  • 另外注意:您的代码容易受到 SQL 注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者通过使用恶意输入值来破坏您的数据库。 bobby-tables.com 给出了风险解释,以及如何使用 PHP / mysqli 安全地编写查询的一些示例。 永远不要像这样将未经处理的数据直接插入到您的 SQL 中。
  • 您最好单独检查部分名称,而不是一个大字符串。这也表明您的数据库设计是错误的,您不应该在关系数据库的一个字段中存储多个值。这使得再次取回数据项变得更加困难,并且很难做其他事情,比如计算每个项目记录了多少,诸如此类。您应该为每个部分名称存储一行,所有部分都具有相同的 class_id。

标签: php json if-statement


【解决方案1】:

你正在破坏 $_POST 部分列表

$section_name = implode(",",$section_name);

所以这种情况可能不起作用:

$section_name==$row['section_name'] 

取决于您的 $_POST 部分排序

【讨论】:

  • 这是一个潜在的解释,但它并不是真正的解决方案。如果你要写一个答案,你也必须解释如何解决它
猜你喜欢
  • 2014-05-15
  • 1970-01-01
  • 2012-07-11
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多