分解字符串并将值作为新行插入数据库中

问题描述 投票:0回答:4

我正在数组内爆炸数据,称为以下内容:

["Levels_SanctionLevel_array"]=>
string(14) "IR01,IR02,IR03"

我需要分解这些数据并将每个值作为 mysql 内的一行输入。比如

pri_id   value
---------------
01       IR01
02       IR02
03       IR04

现在我陷入困境的是: 上面列出的数组可以有 1 个值、3 个值(现在我显示三个值)或 5 个值,并且我不想在数据库中输入 NULL 值。

php arrays sql-insert explode
4个回答
3
投票
$data = explode(',',$your_string);
foreach ($data AS $value) {
  // INSERT INTO DB
}

0
投票

一个简单的循环可以正常工作,但存在对数据库进行多次查询的缺点:

$str = "IR01,IR02,IR03";
$vals = explode(',', $str);
foreach ($vals AS $value) {
  // insert into database
}

由于数据库操作是比在 PHP 中构建查询更重要的瓶颈,因此我会选择为单个查询生成 SQL 代码,如下所示:

$str = "IR01,IR02,IR03";
$vals = explode(',', $str);

$query = 'INSERT INTO my_data VALUES ';

foreach ($vals as $value) {
 $query .= "('', '".$value."'),";
}

$query = rtrim($query, ',');

// insert into database

0
投票

为什么不在数组上使用迭代器来构造 sql 查询? 这样,您将只插入数组中尽可能多的元素。

就像上面的答案。 我想我们是同时回答的。


0
投票

假设你的主数组是

$data
:

foreach ($data as $values)
{
    $value = explode(",", $values);

    foreach ($value as $v)
    {
        $sql = "INSERT INTO table(value) VALUES('$v')";
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.