用php循环插入表

时间:2015-07-15 06:02:15

标签: php mysql

我尝试使用php循环将数据(多条记录)插入到表中。

这段代码:

<?php
$array = array('blue','red','green','yellow','black','white','blue','green');
$array = array_values(array_unique($array)); // remove duplicate and re-index array also
$vals = array_count_values($array);
print_r($array);
?>

out out看起来像:

Array ( [0] => blue [1] => red [2] => green [3] => yellow [4] => black [5] => white )

现在我想用以下代码将输出插入到我的表(颜色)中:

<?php
    for($i = 0; $i < count($vals); $i++){
        $query = "INSERT INTO colours VALUES('$array[$i]');";
        mysql_connect('localhost','root','');
        mysql_query($query);
    }
?>

我做错了什么?

4 个答案:

答案 0 :(得分:2)

这里需要纠正几件事。第一个是解决您没有指定数据库的事实,如下所示:

$sql = "INSERT INTO colours (`color`) VALUES ('" . implode("'),('", $array) . "')";
mysql_query($sql, $conn);

我假设如果你已经创建了一个表,那么它必须存在于你已经创建的某个数据库中。

其次,我认为你的查询可能需要一些纠正。您没有为测试表指定任何列名。第三,您不应该在循环中运行查询。相反,您可以尝试使用单个请求构建一个执行多个插入的查询,如下所示:

onclick

对于特定用例的意图和目的,您甚至不需要循环结构,因为整个数组的值被内爆到一个字符串中以形成最终查询,如图所示。这将为您的所有颜色插入多行。对于超大型阵列,此策略可能不可取。我建议你单独查看如何使用MySQL / PHP使用单个查询进行多次插入。然后$ sql行可能对你更有意义。

第四,你未经编辑的原始问题使用了一个名为“test”的表格,所以我假设你不在生产环境中。无论如何,我建议为您的root管理员帐户设置密码,而不是将其留空。这只是一种很好的做法。

另外,请阅读:Why shouldn't I use mysql_* functions in PHP?

答案 1 :(得分:0)

你可能想要做一些类似的事情,指定你为颜色表插入的列名。

    $conn = mysql_connect('localhost', 'root', '');
if (!$conn) {
  die('Could not connect: ' . mysql_error());
}

for($i = 0; $i<$vals; $i++) {
    $sql="INSERT INTO colors (Column_Name) VALUES ('$array[$i]');";
    $result = mysql_query($sql);
    if (!$result) {
     die('Invalid query: ' . mysql_error());
    }
}

这应该让你走上正轨。

答案 2 :(得分:-1)

你可以不使用for循环来实现。

你的查询将是。

$array = array('blue','red','green','yellow','black','white','blue','green');
$array = array_values(array_unique($array));
$query = "INSERT INTO test VALUES ('".implode("'),('",$array)."');";

答案 3 :(得分:-1)

您的代码应该像

mysql_connect('localhost','root',''); //put this line at the start

mysql_select_db("your db name"); //and add this line after it

$array = array('blue','red','green','yellow','black','white','blue','green');

$array = array_values(array_unique($array)); // remove duplicate and re-index array also

$arr_str = implode("'),('",$array);

$sql_query = "INSERT INTO `test` (`colours`) VALUES ('".$arr_str."')";

mysql_query($sql_query);