2011-07-21 23 views
2

私はPHPで新しく、2つの配列のデータを1つのmysqlテーブルに挿入しようとしました。フィールド次2つの配列を1つのmysqlテーブルに挿入します

表店:datecase_idstatusid

case_idは、1つのステートメントで挿入されたすべてのレコードに対して同じになると値は、セッション変数から来ています。

dateアレイとstatus_idアレイの両方がフォームから転記されています。私は、両方の配列をテーブルに個別に挿入するために各ループにaを使用しているので、両方の配列がうまくポストしていることは分かっています。

ご協力いただければ幸いです。私は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文でVALUESVALUEを置き換えることを忘れないでください。

+0

はあなたの応答をありがとうございました、私はあなたが提供したコードに置き換えられていると私は次のエラーを取得:foreachのために供給無効な引数を() – Bash

+0

この更新されたソリューションをお試しください。更新されたソリューションの –

+0

は、各ループに対してforを削除しますか?または私はちょうど新しいものと既存の行を置き換えます – Bash

0

あなたがpwndになりたくない場合は、mysqli_real_escape_stringをすべての値に使用する必要があります。

$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

関連する問題