【问题标题】:PHP Array ExplodePHP 数组爆炸
【发布时间】:2011-12-14 17:49:43
【问题描述】:

我正在将数据内爆到一个数组中,称为以下内容:

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

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

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

现在我陷入困境的是: 上面列出的数组可能有 1 个值、3 个值(现在我显示三个值)或 5 个值,我不想在我的数据库中输入 NULL 值。 感谢任何人可以分享的任何指导......

【问题讨论】:

  • 您好,您应该进行测试以检查您的数组中是否只有一个或多个值。如果它不止于此,您可以使用“,”作为分隔符并创建一个临时数组以插入到您的数据库中

标签: php arrays explode


【解决方案1】:
$data = explode(',',$your_string);
foreach ($data AS $value) {
  // INSERT INTO DB
}

【讨论】:

    【解决方案2】:

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

    $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
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        假设你的主要数组是$data:

        foreach ($data as $values)
        {
            $value = explode(",", $values);
        
            foreach ($value as $v)
            {
                $sql = "INSERT INTO table(value) VALUES('$v')";
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-26
          • 1970-01-01
          • 2017-02-18
          • 2015-08-28
          • 2012-08-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多