我有四个数组:
$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
是不正确的,但是尝试过很多没有运气的东西。
答案 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);
无需一次又一次地运行查询。