【问题标题】:Implement If condition in PHP array在 PHP 数组中实现 If 条件
【发布时间】:2018-04-20 17:45:05
【问题描述】:

我是 PHP 函数的新手。我认为以下问题可以使用函数来解决。在这里,我可以将 html 表单数据存储在使用以下代码从 ajax 传递的数据库中。但是我有点困惑在哪里实现 if 条件。如果数据已经提交,我想停止数据复制。

我的工作 php 代码

if(isset($_POST["section_name"])){
 $section_name = $_POST["section_name"];
 $class_id = $_POST["class_id"];

 for($count = 0; $count<count($section_name); $count++)
 {
     $query =$con->prepare('INSERT INTO section(class_id, section_name) VALUES (:class_id, :section_name)');
     $query->bindParam(':class_id', $class_id);
     $query->bindParam(':section_name', $section_name[$count]);
     $query->execute();
     echo "Section has been assigned";
     }   

     }

现在,我想在下面的 else 条件中包含上面的代码。

 $query =$con->query('SELECT * FROM section');
    while($row=$query->fetch(PDO::FETCH_ASSOC)){
    if(($_POST["class_id"]==$row["class_id"])&&($_POST["section_name"]==$row["section_name"])){
        echo "Section has already assigned in this class ";

    }
    else{
        // insert...
    }
    }

当我尝试合并代码时,我无法处理。请帮帮我

【问题讨论】:

    标签: php arrays for-loop if-statement


    【解决方案1】:

    你几乎拥有一切,你只需要将它包装在这样的函数中:

    function insert() {
        if(isset($_POST["section_name"])){
            $section_name = $_POST["section_name"];
            $class_id = $_POST["class_id"];
    
            for($count = 0; $count<count($section_name); $count++)
            {
                $query =$con->prepare('INSERT INTO section(class_id, section_name) VALUES (:class_id, :section_name)');
                $query->bindParam(':class_id', $class_id);
                $query->bindParam(':section_name', $section_name[$count]);
                $query->execute();
                echo "Section has been assigned";
            }   
    
        }
    }
    

    然后你这样称呼它:

    $query =$con->query('SELECT * FROM section');
    while($row=$query->fetch(PDO::FETCH_ASSOC)){
    if(($_POST["class_id"]==$row["class_id"])&&($_POST["section_name"]==$row["section_name"])){
        echo "Section has already assigned in this class ";
    
    }
    else{
        insert();
    }
    }
    

    【讨论】:

    • 感谢它有效,但回显消息循环不止一次。如何在循环外回显。所以它只会回显一次
    • 把它放在for循环之外。
    • 哦不,我只是看到数据库,它已经插入了两次甚至更多相同的数据。我认为问题是在while循环中调用函数引起的。如何解决?
    • 您应该使用 WHERE 子句比较 class_id、section_name,而不是查询所有记录。如果它返回你知道它已经存在的记录,如果没有,那么你进行插入。
    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多