从单个输入和多个复选框 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
?>
是否可以使用具有多个单一输入的表单更新数据库,然后在同一表单中使用多个复选框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
?>