2011-07-21 59 views
2

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

以下字段的表店:datecase_idstatusid

case_id将是相同的插在一个声明中的所有记录和值来自一个会话变量。

date数组和status_id数组都从一个表单发布;我知道这两个数组发布都很好,因为我已经使用每个循环将两个数组分别插入表中。

任何帮助将不胜感激。我已经将这些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(); 
    } 
} 

回答

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语句与VALUES更换VALUE

+0

非常感谢您的回复,我已经跟你提供的代码代替,我得到以下错误:()提供的foreach无效参数 – Bash

+0

试试这个更新的解决方案。 –

+0

在更新的解决方案中是否删除了每个循环?或者我只是用新的行替换现有的行 – Bash

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']); 
+0

是的,当然,总是忘了写在上面的文章中 – Bash