foreach将数组作为列插入

时间:2012-01-30 16:51:37

标签: php

我有四个数组:

$qtys = $_POST['qty'];
$colours = $_POST['colour'];
$sizes = $_POST['size'];
$names = $_POST['name'];

我希望这些像这样进入mysql表:

qty      | colour     | size     | name
-------------------------------------------
$qtys[0] | $colour[0] | $size[0] | $name[0]
$qtys[1] | $colour[1] | $size[1] | $name[1]

我尝试过各种各样的事情,包括:

foreach($qtys as $value) {
  $i = 0;
  mysql_query("INSERT INTO table (qty,colour,size,name) VALUES ('$qtys[$i]','$colours[$i]','$sizes[$i]','$names[$i]')");
  $i++;
} 

......但无济于事。任何人都可以建议一个不同的INSERT语句来获取表中的数据吗?我需要循环迭代吗?我确信$qtys as $value是不正确的,但是尝试过很多没有运气的东西。

3 个答案:

答案 0 :(得分:2)

首先,您每次迭代都要重置计数器,如果您想以这种方式执行,请将$i = 0置于循环之外。

$i = 0;
foreach($qtys as $value) {
    mysql_query("INSERT INTO table (qty,colour,size,name) VALUES ('$qtys[$i]','$colours[$i]','$sizes[$i]','$names[$i]')");
    $i++;
} 

更好(更清洁)的方式是:

for ($i = 0; $i < $qtys.count(); $i++) {
    mysql_query("INSERT INTO table (qty,colour,size,name) VALUES ('$qtys[$i]','$colours[$i]','$sizes[$i]','$names[$i]')");
} 

另外,你确定数组的长度总是一样吗?否则,您可能会遇到索引超出范围的风险..

答案 1 :(得分:1)

只需使用for循环即可, AND REMEMBER ESCAPE USER INPUT

for($i =0, $count = count($qtys); $i < $count; $i++) {
  mysql_query("INSERT INTO table (qty,colour,size,name) VALUES ('$qtys[$i]','$colours[$i]','$sizes[$i]','$names[$i]')");
} 

答案 2 :(得分:1)

$sql = "INSERT INTO table (qty,colour,size,name) VALUES ";

$inserts = array();
for($i=0 ; $i < count($qtys); $i++) {
  $inserts[] = "('$qtys[$i]','$colours[$i]','$sizes[$i]','$names[$i]')";
} 

$sql .= implode(',', $inserts);
mysql_query($sql);

无需一次又一次地运行查询。