首页 > 解决方案 > 如何分解数组并插入 MySQL

问题描述

我需要帮助爆炸这个数组并将值插入 MySQL

 $ar =  Array ( [0] => Array ( [status] => 1 [message] => Successfully Validated! [id] => 17 [licence] => 9ETD-6X57-AWSJ [period] => 6 [user] => 0 ) [1] => 1 ) 

到目前为止我尝试了什么:

//print_r($ar);
    $categories = '';
$cats = explode(",", $ar);
foreach($cats as $cat) {
    $cat = trim($cat);
    $categories .= "<category>" . $cat . "</category>\n";
}

我的表结构(列定义),

id | licence | period | no_users
---|---------|--------|----------
   |         |        |

但我有这个错误:

警告:explode() 期望参数 2 是字符串,数组在第 118 行的 C:\Users\HP\Desktop\phpdesktop\www\setup.php 中给出

警告:在第 119 行的 C:\Users\HP\Desktop\phpdesktop\www\setup.php 中为 foreach() 提供的参数无效

标签: phpmysql

解决方案


explode用于从字符串创建数组。你已经有一个数组,所以你需要遍历它的值。目前尚不清楚您是要从数组中输出键还是值,但是此代码将同时输出两者,您可以决定使用哪个:

foreach ($ar as $values) {
    if (!is_array($values)) continue;
    foreach ($values as $k => $v) {
        echo "$k: $v\n";
    }
}

输出:

status: 1
message: Successfully Validated!
id: 17 
licence: 9ETD-6X57-AWSJ 
period: 6 
user: 0

3v4l.org 上的演示

更新

要使用 PDO 插入表中,假设有一个名为 的连接$conn,您可能会执行类似的操作。首先更改foreach循环以将值插入数组,然后准备语句并使用数据数组插入:

foreach ($ar as $values) {
    if (!is_array($values)) continue;
    foreach ($values as $k => $v) {
        $data[":$k"] = $v;
    }
}
$stmt = $conn->prepare("INSERT INTO mytable (id, licence, period, no_users)
                        VALUES (:id, :licence, :period, :no_users)");
$stmt->execute($data);

我不确定 PDO 有多少关心数组中的额外参数,因为我从未尝试过,但您可能需要使用

unset($data[':status'], $data[':message']);

删除execute.


推荐阅读