【问题标题】:How do I insert multiple records into a mysql database, using a combination of checkboxes and html select如何使用复选框和 html 选择的组合将多条记录插入 mysql 数据库
【发布时间】:2014-09-18 05:30:11
【问题描述】:

假设某人选择了 2 名学生和 1 名老师 如何在 MYSQL 数据库中发送/创建 2 个不同的记录, - 每个学生/教师组合一个新记录

HTML:

1.) 在这里我可以选择多达“四”个学生:

    <input type="checkbox" name="ALM[]" value="Bob" >Bob<br />
    <input type="checkbox" name="ALM[]" value="Stacy" >Stacy<br />
    <input type="checkbox" name="ALM[]" value="John" >John<br />
    <input type="checkbox" name="ALM[]" value="Liam" >Liam<br />

2.) 下面我选择“ONE”老师:

    <select name="TCH">
    <option value="Dan">Dan</option>
    <option vaule="Rick">Rick</option>

如果我选择 Bob 和 Stacy(学生)和 Rick(老师),我需要。 2 条记录 1.) Bob |瑞克。 2.) 史黛西 |瑞克。

PHP:

这是我的 PHP,我在其中分离传入的复选框数据并尝试发送到数据库

$ALM = implode(',',$_POST['ALM']);
$TCH = $_POST['TCH']; 

$query = "INSERT INTO cl_st_tch (students_id,teachers_id) 
VALUES"; for ($i=0; $i<sizeof($ALM); $i++)
   $query .= "('" . $ALM[$i] . "','$TCH'),";
   $query = rtrim($query,',');
   mysql_query($query) or die (mysql_error() );

我错过了什么?任何帮助将不胜感激

【问题讨论】:

    标签: php mysql checkbox


    【解决方案1】:

    为避免多个 SQL 查询,可以构建单个查询。

        <?php
        $ALM = $_POST['ALM']; //implode(',',$_POST['ALM']);
        $TCH = $_POST['TCH'];
        $arr = array();
        $query = 'INSERT INTO cl_st_tch (students_id,teachers_id) VALUES ';
        foreach($ALM as $student){
                $arr[] = '('.$student.','.$TCH.')';
        }
        if(!empty($arr)) {
                $query .= implode(', ', $arr);
                mysql_query($query);
        }
        ?>
    

    【讨论】:

    • 你刚刚把你的数据库丢给了 bobby table。
    • @MTilsted 请解释一下?
    • 您的 sql 查询包含未转义的用户输入,因此如果该输入包含使用 sql 制作的特殊内容,则将执行用户 sql。但是您应该更新使用 mysql_query 或其他以 mysql_ 开头的方法 - 甚至 php 文档也说明了这一点。请改用 Pdo。
    • 这个答案。是正确的,它将适用于您正在尝试做的事情
    【解决方案2】:

    由于您的比例是 1:n(1 位老师对许多学生),

    遍历每个学生并为每个学生添加一位老师。

    <?php
    
       $ALM = $_POST['ALM']; //implode(',',$_POST['ALM']);
       $TCH = $_POST['TCH']; 
    
       foreach($ALM as $student){
          $query = "INSERT INTO cl_st_tch (students_id,teachers_id) VALUES($student, $TCH)";
          mysql_query($query);
       }
    ?>
    

    【讨论】:

    • 工作...我想,当我检查我的数据库时,它只显示 0(零)作为条目
    • 尝试print_r()$_POST['ALM']查看帖子内容。
    • 价值观周围缺少(单引号)'$students'
    猜你喜欢
    • 2010-11-15
    • 2018-03-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多