将两个数组插入一个mysql表中

时间:2011-07-21 14:48:10

标签: php mysql arrays insert foreach

我是PHP新手,我试图将两个数组中的数据插入到一个mysql表中。

该表存储以下字段:datecase_idstatusid

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();
    }
}

2 个答案:

答案 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']);