php - 将复杂的多维数组插入SQL,不起作用
问题描述
我已经找了好几天了,现在我要在这里问...我有 1 个数组,我想插入到 sql 中。但是数组的结构使它变得困难。
$the_array = [
[
"3_Bachelor",
[
3 => "English",
4 => "German"
]
],
[
"3_Master",
[
1 => "Marketing",
2 => "Accountancy"
]
]
];
这是第一次抽奖,不工作:
$id = "3";
$sql = "INSERT INTO users (id,i d_training_key ,training_lectures)
VALUES (:id, :id_training_key, :training_lectures)";
$stmt= $pdo->prepare($sql);
foreach ($the_array as $lec => $l) {
foreach ($l as $a) {
$stmt->execute($l[0], $id, $a);
}
}
困难的部分在于阵列,阵列,阵列......你明白我的意思吗?
数据库看起来像“英语”和“德语”应该在一行中,每行重复“id”和“id_training_key”:id | id_training_key | 培训讲座
你们有什么想法或提示吗?如果您认为应该重组阵列,您的意见是什么?
非常感谢 !
解决方案
您的主要问题是您使用的是命名参数,但只传递了一个位置数组。
在循环中执行语句时,抢先绑定参数并execute()
在没有任何参数的情况下调用通常会更简单。尝试这样的事情
$id_training_key = 3;
$sql = "INSERT INTO users (id, id_training_key, training_lectures)
VALUES (:id, :id_training_key, :training_lectures)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":id", $id);
$stmt->bindParam(":id_training_key", $id_trainging_key);
$stmt->bindParam(":training_lectures", $lang);
foreach ($the_array as [ $id, $langs ]) {
foreach ($langs as $lang) {
$stmt->execute();
}
}
这将使用 like 执行插入
INSERT INTO users (id, id_training_key, training_lectures)
VALUES ('3_Bachelor', 3, 'English');
INSERT INTO users (id, id_training_key, training_lectures)
VALUES ('3_Bachelor', 3, 'German');
-- etc
推荐阅读
- javascript - 每个按钮有 2 个数字的虚拟密码键盘如何工作?
- javascript - 替代 normalize() 对数组进行排序
- python - Python自定义解析器未检测到参数
- python - 使用正则表达式将数字添加到字符串中的列表
- javascript - 如果在 ajax 调用之前检查,则获取复选框值
- sql-server - SQL Server 存储过程 INSERT INTO
- spring - Spring Boot默认资源位置找不到静态文件
- python - 使用 scipy.io 在 python 中读取 Matlab 数据
- python - 修改一个pytorch张量然后获取梯度让梯度不起作用
- java - 如何阻止 Intellij Idea 降低计算机速度?