根据数组写入行数

时间:2014-02-06 14:20:44

标签: php mysql arrays

我从表单中将多个复选框值作为cities []发布。如果我打印数组它看起来像这样:

Array ( [0] => 8 [1] => 9 [2] => 16 [3] => 18 [4] => 19 [5] => 25 [6] => 60 ) 

选中的复选框数量可以从1到200不等,我需要在mysql表'cities'中的不同行上写每个值。例如。选中10个复选框= 10行。我还需要在每一行添加相同的'user_id'。

$user_id = '12345'; // this I can get from session

我的数据库表'cities'结构:id(auto increment), city_id, user_id

我需要保存这样的数据:

第1行:id = 1,city_id = 8,user_id = 12345

第2行:id = 2,city_id = 9,user_id = 12345

依旧......

我试过了:

foreach(($_POST['cities'] as $c) {
  $query = 'INSERT INTO cities values (null, \'' . $c['id'] . '\', \'' . $c['city_id'] . '\', '$user_id');'
  mysql_query($query);
}

我想我迷路了。谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

    foreach(($_POST['cities'] as $c) {    
          $query = "INSERT INTO cities(city_id, user_id) values ('$c', '$user_id');"    
          mysql_query($query);    
    }

我相信你只需要运行以上查询

答案 1 :(得分:0)

foreach($_POST['cities'] as $city_id) {
   $query = "INSERT INTO cities VALUES(0, ${city_id}, $user_id)";
   mysql_query($query);
}

这应该基于传递的cities数组运行x查询。由于自动递增ID,您只需将“0”设置为city_id。

请记住,通过使用正确的函数和清理输入来保护查询免受sql注入。

答案 2 :(得分:0)

插入多行是这样的:

INSERT INTO example
VALUES
  (100, 'Name 1', 'Value 1', 'Other 1'),
  (101, 'Name 2', 'Value 2', 'Other 2'),
  (102, 'Name 3', 'Value 3', 'Other 3'),
  (103, 'Name 4', 'Value 4', 'Other 4');

请参阅:http://www.electrictoolbox.com/mysql-insert-multiple-records/

您的循环应该类似于

$query = "INSERT INTO cities ";

foreach($_POST['cities'] as $key => $value) {
  $query .= "values (null, '" . $c['id'] . "', '" . $c['city_id'] . "', ".$user_id."), ";
}

// take last comma off
$query = substr($query, -2);

mysql_query($query);

P.S。注意语法错误!