循环遍历字符串并插入mysql列的最佳方法是什么?

时间:2013-05-18 03:07:48

标签: php mysql csv insert explode

我有一个显示以下字符串的变量:

$item_value = itemOne,itemTwo,itemThree

我想获取此字符串并将每个项目作为单个列的单独行条目插入。另外,我需要它为每个条目插入一个自动增量键值。所以要完成这个例子,这就是我希望mysql表在完成时的样子:

ID || item_value || comments

----------------------------------------

1 || itemOne || --------------

2 || itemTwo || --------------

3 || itemThree || --------------

我的感觉是我需要在逗号周围爆炸字符串,然后将其插入表中。我试过这个但是在将每个项目作为单独的行条目时遇到了一些问题。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

对于自动增量我建议让数据库处理它,因为mysql只是在id字段上用AUTO_INCREMENT声明它,对于postgres你可以将数据类型设置为serial,至于分隔每一行使用php explode函数< / p>

这是一个小例子

<?php
  $dbh = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');
  $query = "INSERT into my_table (item_value) VALUES (?)";

  $data = 'itemOne,itemTwo,itemThree,itemFour';
  $st = $dbh->prepare($query);

  foreach(explode(',', $data) as $r) {
    // user array($r) for php 5.3 or lower
    $st->execute([$r]);
  }

这使用PDO,这是处理数据库连接的推荐方法

答案 1 :(得分:1)

这样的事情应该将它们分开并提供在db中插入的选项:

<?php
$item_value = 'itemOne,itemTwo,itemThree';
$item_array = explode(",",$item_value);

foreach($item_array as $key => $value){
    // insert into the db here
    $query = "INSERT INTO table_name set item_value = '".mysql_real_escape_string($value)."', ID = '".($key + 1)."'";
    // however you choose to connect and insert into the database goes here :)
}
?>
相关问题