我是PHP新手,我试图将两个数组中的数据插入到一个mysql表中。
该表存储以下字段:date
,case_id
,statusid
case_id
对于在一个语句中插入的所有记录都是相同的,并且值来自会话变量。
date
数组和status_id
数组都是从表单中发布的;我知道两个数组都发布正常,因为我已经使用a for each循环将这两个数组分别插入到表中。
任何帮助将不胜感激。我已经将foreach条件留空了以获得建议。
$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']);
$status = $_POST['statuses'];
$date = $_POST['dates'];
foreach() {
$sql = " INSERT INTO casestatus (date, case_id, statusid) VALUE
('$date', '$caseid', '$statusid') ";
if (!mysqli_query($link, $sql)) {
$error = 'Error assigning selected statuses to case.';
include 'error.php';
exit();
}
}
答案 0 :(得分:1)
试试这个。
// Avoid SQL Injections.
$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']);
$statuses = $_POST['statuses'];
$dates = $_POST['dates'];
$i = 0;
foreach($statuses as $status)
{
if($i < sizeof($dates))
{
$statusid = mysqli_real_escape_string($status);
$date = mysqli_real_escape_string($dates[$i]);
$sql = "INSERT INTO casestatus (date, case_id, statusid) VALUES ('$date', '$caseid', '$statusid')";
$i++:
}
// etc...
}
不要忘记在INSERT语句中将VALUE
替换为VALUES
。
答案 1 :(得分:0)
您需要对所有值使用mysqli_real_escape_string
,除非您喜欢pwnd。
$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']);
$statuses = mysqli_real_escape_string($link,$_POST['statuses']);
$dates = mysqli_real_escape_string($link,$_POST['dates']);