php - 插入多个数据时,此 PDO PHP 中的错误数组到字符串转换
问题描述
试图插入这个数组面对
数组到字符串转换错误
但数据正在插入数据库
$connect = new PDO("mysql:host=localhost; dbname=dentist", "root", "");
if (isset($_POST['problem'])) {
$problem = $_POST['problem'];
$tooth = $_POST['tooth'];
$intervention = $_POST['intervention'];
For循环使用插入数组
for ($i = 0; $i < count($problem); $i++) {
$query = "INSERT INTO tbl_finds (problem, tooth, intervention)
VALUES ($problem[$i], $tooth[$i], $intervention[$i])";
$stmt = $connect->prepare($query);
$stmt->execute(array($_POST['problem'], $_POST["tooth"], $_POST["intervention"]));}}
解决方案
您正在将值直接分配给查询,并尝试使用execute()
.Don't 将它们绑定到下一行。
像下面这样:
$query = "INSERT INTO tbl_finds (problem, tooth, intervention) VALUES (?, ?, ?)";
$stmt = $connect->prepare($query);
foreach($_POST['problem'] as $key=>$value){
$stmt->execute(array($value, $_POST["tooth"][$key], $_POST["intervention"][$key]));
}
完整的代码将是:
$connect = new PDO("mysql:host=localhost; dbname=dentist", "root", "");
if (isset($_POST['problem'])) {
$problem = $_POST['problem'];
$tooth = $_POST['tooth'];
$intervention = $_POST['intervention'];
$query = "INSERT INTO tbl_finds (problem, tooth, intervention) VALUES (?, ?, ?)";
$stmt = $connect->prepare($query);
foreach($_POST['problem'] as $key=>$value){
$stmt->execute(array($value, $_POST["tooth"][$key], $_POST["intervention"][$key]));
}
}
注意:- $_POST['problem'], $_POST["tooth"], $_POST["intervention"]
这三个都是数组,所以当您直接使用它们作为值绑定到查询时,您会收到该错误。
推荐阅读
- android - 在 exoplayer 中,如何将 inputstram 中的缓冲字节作为视频播放?
- c# - c# 2 for each loop 如果一个工作另一个不工作
- javascript - 如何在原生 webview 和 react js 页面之间传输数据?
- go - 为什么当我使用此代码时不调用 makelice 方法?
- python - EOFError 使用 pysftp
- kotlin - 如何检查 Kotlin 列表中的索引是否为空/null?
- python - 如何添加增强 PyTorch 迁移学习教程以绘制随时间变化的训练和验证损失?
- python - 我无法抓取该 div 中的信息
- c - 在 MIPS(无限循环)中交换时出现问题
- android - targetSdkVersion 30下的Android扩展文件下载器