2

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

$item_value = itemOne,itemTwo,itemThree

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

ID || item_value || comments

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

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

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

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

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

4

2 回答 2

2

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

这是一个小例子

<?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,这是处理数据库连接的推荐方法

于 2013-05-18T03:34:50.920 回答
1

像这样的东西应该将它们分开并提供插入数据库的选项:

<?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 :)
}
?>
于 2013-05-18T03:13:07.207 回答