0

我有两个数组。这些数组的值通过表单发布。我想要的是将这些数组的值插入到数据库中。这是我的代码。

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

使用第一个数组的键访问第二个数组中的项目。如果您尝试使用 cnic 0 插入参加者 0、使用 cnic 1 插入参加者 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 注入添加了转义,但您应该研究一个带有参数化查询的现代 API,例如 PDO 或 MySQLi。

于 2012-11-30T07:32:26.783 回答
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 回答
0

如果您不关心原始数组键,则可以使用array_combine使一个数组成为键,另一个成为值,然后在 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 回答