0

私は2つの配列を持っています。これらの配列の値は、フォームを介して投稿されます。私が望むのは、これらの配列の値をデータベースに挿入することです。これが私のコードです。

if($_SERVER['REQUEST_METHOD']=='POST') {
    $subject=$_POST['subject'];
    $total=$_POST['total'];
    $attendee_array = $_POST['att'];
    $cnic_array=$_POST['cnic'];

    foreach(($attendee_array as $attendee) and ($cnic_array as $cnic)) {
        $query1=mysql_query("INSERT INTO course VALUES('','$subject','$total','$attendee','$cnic')") or die(mysql_error());
    }
}

動いていない。このタスクを実行するにはどうすればよいですか?

4

3 に答える 3

2

最初の配列のキーを使用して、2 番目の項目にアクセスします。これは、出席者 0 を cnic 0 に、出席者 1 を cnic 1 に、というように挿入しようとしている場合に機能します。

foreach(($attendee_array as $key => $attendee)) {

    $cnic = mysql_real_escape_string($cnic_array[$key]);
    $attendee = mysql_real_escape_string($attendee);
    // do same as above for all user input ^^^

    $query1=mysql_query("INSERT INTO course VALUES('','$subject','$total','$attendee','$cnic')") or die(mysql_error());

}

SQL インジェクションのエスケープを追加しましたが、PDO や MySQLi などのパラメーター化されたクエリを使用する最新の API を検討する必要があります。

于 2012-11-30T07:32:26.783 に答える
0

元の配列キーを気にしない場合は、 を使用array_combineして 1 つの配列をキーにし、もう 1 つを値にして、foreach ループでキーと値の両方を呼び出すことができます。

$name = array('Chris','Steve','Dave');
$city = array('New York','San Diego','Dallas');

foreach(array_combine($name, $city) as $k => $v){
    echo $k.' lives in '.$v.'<br/>';    
}

Chris lives in New York
Steve lives in San Diego
Dave lives in Dallas

あなたの例では、次のようになります。

foreach(array_combine($attendee_array,$cnic_array) as $attendee => $cnic) {
    $query1=mysql_query("INSERT INTO course VALUES('','$subject','$total','$attendee','$cnic')") or die(mysql_error());
}
于 2012-11-30T07:57:06.463 に答える
0
$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($attendee_array));
$mi->attachIterator(new ArrayIterator($cnic_array));

foreach ( $mi as $value ) {
    list($attendee,$cnic) = $value;
    ....etc
}
于 2012-11-30T07:46:52.623 に答える