php - 如何分解数组并插入 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() 提供的参数无效
解决方案
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
更新
要使用 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
.
推荐阅读
- c++ - 如何使用 std::conditional 选择自由函数
- c# - 如何将两个base64字符串合并为一个
- mysql - MySQL 查询到 pSQL 查询(日期为 NULL)
- docker - 如何在本地 kubernetes 上使用 Kaniko
- mysql - mysql中的条件连接表
- tensorflow - 为什么 get_tensor_by_name 无法正确获取 tf.keras.layers 定义的层权重
- c# - 在执行期间读取 .xlsx 文件,就好像它是 .csv 文件一样
- javascript - 如何访问对象中的某个 Array[property]?
- ios - UIScrollView 在触摸时滚动到顶部
- android - 是什么导致了这个 KeyStore 异常?