首页 > 解决方案 > 插入多个数据时,此 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"]));}}

标签: phpmysqlpdo

解决方案


您正在将值直接分配给查询,并尝试使用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"]这三个都是数组,所以当您直接使用它们作为值绑定到查询时,您会收到该错误。


推荐阅读