【问题标题】:MYSQL insert same ID different explode on columnMYSQL插入相同的ID不同的列爆炸
【发布时间】:2017-02-24 09:32:39
【问题描述】:

我需要帮助让我的脚本在导入文档中的特定符号之后自动排序 id,呃,让我解释一下。

我有一个excel格式的文档,里面包括

ID____PRODUCT___________
1_____prod1*prod2*prod3_
2_____prod1*prod2*prod3_
3_____prod1*prod2*prod3_

所以我需要做的是,将它们插入到 mysql 中,看起来像这样

ID____PRODUCT____
1_____prod1______
1_____prod2______
1_____prod3______
2_____prod1______
2_____prod2______
2_____prod3______
3_____prod1______
3_____prod2______
3_____prod3______

所以需要在每个 * 之后创建一个新对象,到目前为止我已经制作了这个脚本,它确实将它排序到 2 列,只需要让其他列使用相同的 id 对其进行排序。有什么想法吗?

        while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
    {
        $count++;                                     

        $expl=explode(";",$emapData[0]);    $string1 = $expl[0];    $string2 = $expl[1];

        if($count>1){                               
          $sql = "INSERT into products(a,b) values ('$string1','$string2')";
          mysql_query($sql);
        }                                          
    }

它是一个 csv 文件,所以它用 ; 分隔这就是为什么我需要爆炸它。

所以我只需要插入每个带有新 * 的产品,我可以想象使用另一个爆炸到,但是我如何分配它以便它将它插入到与第一个具有相同 ID 的新列中?

【问题讨论】:

  • 您需要将$string2 分解为*,然后遍历所有值以插入,同时停止使用mysql() 函数!查看mysqli/pdo
  • 是的,谢谢你的提示和技巧,让它工作了,我只使用mysql函数,因为它仅供私人使用,我只上传一个脚本,然后每年使用一次函数或什么的就是这样。再次感谢!

标签: php mysql excel explode


【解决方案1】:

试试这个

 //connect using mysqli
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
    while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
    {
        $count++;                                     

        $expl=explode(";",$emapData[0]);    
        $string1 = $expl[0];//ID like 1    
        $string2 = $expl[1];//the prod1*prod2*prod3
        $arr_of_products = explode("*",$string2);
        foreach ($arr_of_products as $value) {
            $sql = "INSERT into products(a,b) values ('$string1','$value')";
            //mysql_query($sql); do not use it
            $result = $mysqli->query($sql);
        }

    }

【讨论】:

  • @Strawberry 我刚刚回答了这个问题。任何 API 的使用由用户自己决定,他没有就此征求意见。所以我真的没有理由投反对票。
  • 这里有很多关于mysql_*函数使用的答案。但是大约 10 年后,我们都不再回答这些问题,而 制作 OP 更新或使用 PDO 或 MySQLi
  • 仍然没有理由对 imo 投反对票。反正我改了答案
  • 我只是在尝试了第一个 cmets 技巧后才看到这个,但是我也做了类似的方法,只是有点绕,谢谢你的帮助!
猜你喜欢
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
相关资源
最近更新 更多