【问题标题】:What is the best way to loop through string and insert into mysql column?遍历字符串并插入 mysql 列的最佳方法是什么?
【发布时间】:2013-05-13 06:51:47
【问题描述】:

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

$item_value = itemOne,itemTwo,itemThree

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

ID || item_value || comments

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

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

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

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

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

【问题讨论】:

  • 使用explode()和foreach()

标签: php mysql csv insert explode


【解决方案1】:

对于自动增量,我建议让数据库处理它,对于 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,这是处理数据库连接的推荐方法

【讨论】:

    【解决方案2】:

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

    <?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 :)
    }
    ?>
    

    【讨论】:

    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2014-09-04
    • 2012-07-16
    • 2011-04-24
    • 2013-01-09
    • 2016-07-28
    相关资源
    最近更新 更多