从单个输入和多个复选框 select 表单更新数据库

Update Database from single inputs and with multiple checkbox select form

是否可以使用具有多个单一输入的表单更新数据库,然后在同一表单中使用多个复选框select?

我有一个表格,其中客户select是他的: 一个。地点; b.他想调动员工的日期; C。拥有多名员工的 CHECKBOX 组(他 select 是一名或多名员工); d.转移的原因。

现在,使用以上信息,a。 b.和d。必须为每个c写入数据库。 select编辑

如果我只选择一名员工,数据会正确写入数据库,我的问题是当不止一名员工被 selected 时。

如果需要我会给出代码,但如果可能的话,应该有一个标准的方法来做这件事。

代码如下:

     <?php
    session_start(); 
    $old_jc_code = $_SESSION['empl_jc_code'];
    ?>
    <?php
    $new_jc_code = "$_POST[new_jc_code]";
    $move_date = "$_POST[move_date]";
    $move_reason = "$_POST[move_reason]";
    $test = implode(',',$_POST[empl_idno]);    //this is the array from the checkbox select
    ?>
    <?php
    include("../xxx");
        $cxn = mysqli_connect($host,$user,$password,$dbname)
            or die ("Couldn't connect to server.");
        $query = "INSERT INTO `empl_movement`  
             (`empl_idno`, `empl_jc_code`, `new_jc_code`, `move_date`, `move_receipt_date`, `move_reason`)
            VALUES 
             ('$test','$old_jc_code','$new_jc_code','$move_date','$move_receipt_date','$move_reason')";
        $result = mysqli_query($cxn,$query)
            or die ("Couldn't execute query. "
                .mysqli_error($cxn));
    ?>

我认为最好识别是一个用户还是多个用户。我不知道你的代码是什么样的,但 $_POST['employees'] 可能是一个数组,如果这是多选字段

$sql = "UPDATE [your_table] SET [values you want to set] WHERE ";
if(isset($_POST['employees'][1])) // if key 0 is set and 1 is not set then it will be one employeeonly, if key 1 is set then it will be more that one employee
{
  $employees = "`".implode ("`, `", $_POST['employees'])."`";
  $sql  .= "`employee` IN ($employees)";
}
else
{
  $employees = $_POST['employees'][0];
  $sql  .= "`employee` = `$employees`";
}

我编辑了你上面的代码。请阅读评论。你没有要求它,但我在我的例子中使用了准备好的语句,因为它被认为是好的做法并且避免了你的代码包含的 SQL 注入的威胁(将未经验证的用户数据原始插入到数据库中) .我还发现你对单引号和双引号的使用有点混乱。未经测试!:

<?php
session_start(); 
$old_jc_code = $_SESSION['empl_jc_code'];
?>
<?php
$new_jc_code = $_POST['new_jc_code'];
$move_date = $_POST['move_date'];
$move_reason = $_POST['move_reason'];
$move_receipt_date=$_POST['move_receipt_date']; //You seem to have forgotten this
$test = $_POST['empl_idno'];    //<- make sure that this is actually an array
?>
<?php
include("../xxx");
    $cxn = mysqli_connect($host,$user,$password,$dbname)
        or die ("Couldn't connect to server."); 
$insData['oldjccode']=$old_jc_code;
$insData['newjccode']=$new_jc_code;
$insData['movedate']=$move_date;
$insData['movereceiptdate']=$move_receipt_date;
$insData['movereceiptdate']=$move_reason;
foreach($test as $testdata){
    $insStrng[]='(?,:oldjccode,:newjccode,:movedate,:movereceiptdate,:movereason)'; //Using prepared statements decreases SQL Injection Threat
    $insData[]=$testdata;

}


$query =  "INSERT INTO `empl_movement`(`empl_idno`, `empl_jc_code`, `new_jc_code`, `move_date`, `move_receipt_date`, `move_reason`) VALUES";
$query .=implode(',',$insStrng);
$statement = $cxn->prepare($query); //preparing the statement with the placeholders
$statement->execute($insData); //inserting the actual data into the placeholders


?>