首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何爆炸数组并插入MySQL

如何爆炸数组并插入MySQL
EN

Stack Overflow用户
提问于 2019-03-16 01:22:19
回答 1查看 705关注 0票数 1

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

代码语言:javascript
复制
 $ar =  Array ( [0] => Array ( [status] => 1 [message] => Successfully Validated! [id] => 17 [licence] => 9ETD-6X57-AWSJ [period] => 6 [user] => 0 ) [1] => 1 ) 

到目前为止我尝试过的是:

代码语言:javascript
复制
//print_r($ar);
    $categories = '';
$cats = explode(",", $ar);
foreach($cats as $cat) {
    $cat = trim($cat);
    $categories .= "<category>" . $cat . "</category>\n";
}

我的表结构(列定义),

代码语言:javascript
复制
id | licence | period | no_users
---|---------|--------|----------
   |         |        |

但我有个错误:

警告: array ()期望参数2是字符串,在第118行的C:\Users\HP\Desktop\phpdesktop\www\setup.php中给出数组 警告:为第119行的C:\Users\HP\Desktop\phpdesktop\www\setup.php中的foreach()提供的参数无效

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-16 01:29:15

explode用于从字符串创建数组。您已经有了一个数组,因此需要对其值进行循环。还不清楚您是要输出键还是要从数组中输出值,但是这段代码将同时输出两个,您可以决定使用哪一个:

代码语言:javascript
复制
foreach ($ar as $values) {
    if (!is_array($values)) continue;
    foreach ($values as $k => $v) {
        echo "$k: $v\n";
    }
}

输出:

代码语言:javascript
复制
status: 1
message: Successfully Validated!
id: 17 
licence: 9ETD-6X57-AWSJ 
period: 6 
user: 0

基于3v4l.org的演示

更新

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

代码语言:javascript
复制
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有多在乎数组中的额外参数,因为我从未尝试过,但是您可能需要使用

代码语言:javascript
复制
unset($data[':status'], $data[':message']);

若要删除execute之前不需要的值,请执行以下操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55192582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档