我正在尝试将数组插入数据库。为什么这不起作用?
$array_zone = array();
$array_data = array();
while($row = mysql_fetch_array($keputusan1)){
$array_zone[] = $row['zone'];
$array_data[] = $row['data'];
}
echo "<pre>";
print_r($array_zone);
echo "<br>";
print_r($array_data);
echo "</pre>";
$list_zone = implode(",", $array_zone);
$list_data = implode(",", $array_data);
for($i = 0; $i < 4; $i++)
{
mysql_query("INSERT INTO `db`.`table1` (`id`, `domain`) VALUES ('$list_zone', '$list_data')");
}
内爆之前的数组输出:
Array
(
[0] => 270
[1] => 270
[2] => 255
[3] => 255
)
Array
(
[0] => ok.com.
[1] => lo.com.
[2] => i.com.
[3] => k.com.
)
结果我得到:
0键应该与0键中的数据一起使用,1键应该与1键中的数据一起使用等等......请帮帮我。谢谢。
答案 0 :(得分:4)
您可以使用INSERT ... SELECT 。 $keputusan1
中返回的结果是SELECT
查询。它肯定会返回zone
和data
列。假设查询为SELECT zone, data, columns ... FROM tbl1
。
如果您使用INSERT ... SELECT,则新查询将为
INSERT INTO `db`.`table1` (`id`, `domain`) SELECT zone, data FROM tbl1";
这将SELECT
首先INSERT
一次性。
您的代码存在问题
$array_zone
和$array_data
代替$list_zone
和$list_data
。但它不应该是第1步。答案 1 :(得分:2)
在我看来,你只是忘了在循环中使用循环索引($ i) 访问数组元素:
#!/usr/bin/php
<?php
$array_zone = array('a','b','c','d');
$array_data = array('1','2','3','4');
print_r($array_zone);
print_r($array_data);
for($i = 0; $i < count($array_zone); $i++)
{
echo("INSERT INTO `db`.`table1` (`id`, `domain`) VALUES ('$array_zone[$i]', '$array_data[$i]')\n");
}
?>
现在用mysql_query调用替换echo,并删除末尾的'\ n'......
答案 2 :(得分:1)
您的list_zone(实际上是array_zone)包含在一组单引号中,因此您传递一个长字符串。你这样做了四次。一次传递一对值。
答案 3 :(得分:0)
您确定要以这种方式执行此操作吗?尝试serialize()
函数而不是内爆可能是一个好主意。 http://php.net/manual/en/function.serialize.php
使用JSON进行此任务可能更好。 http://php.net/manual/en/function.json-encode.php