将数组数据插入数据库

时间:2012-02-19 09:27:45

标签: php mysql arrays

我正在尝试将数组插入数据库。为什么这不起作用?

$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.
)

结果我得到: phpmyadmin

0键应该与0键中的数据一起使用,1键应该与1键中的数据一起使用等等......请帮帮我。谢谢。

4 个答案:

答案 0 :(得分:4)

您可以使用INSERT ... SELECT $keputusan1中返回的结果是SELECT查询。它肯定会返回zonedata列。假设查询为SELECT zone, data, columns ... FROM tbl1

如果您使用INSERT ... SELECT,则新查询将为

INSERT INTO `db`.`table1` (`id`, `domain`) SELECT zone, data FROM tbl1";

这将SELECT首先INSERT 一次性

您的代码存在问题

  1. 4个SQL语句。它应该是1。
  2. 如果使用for循环,则应使用$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