You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PDO执行INSERT语句出现Array to string conversion错误,如何解决?

问题原因

你调用execute()时传入了[$data],而$data本身是一个关联数组['first_name' => 'ben'],这相当于把整个数组作为单个占位符的参数传递。PDO尝试将数组转换为字符串匹配SQL中的占位符,于是触发Array to string conversion错误,数据库最终存储的是数组转字符串后的Array值。

解决方法

有两种可行的修复方式:

方式1:传递单个字段值

因为你的SQL只有一个占位符?,直接传入$data里的first_name值即可:

<?php $data = ['first_name' => 'ben'] ?>
<?php $sql = "INSERT INTO names (first_name) values (?);" ?>

<?php $statement = $pdo->prepare($sql); ?>
<?php $statement->execute([$data['first_name']]); ?>

方式2:使用命名占位符(更适合多字段场景)

把SQL中的匿名占位符?改成命名占位符:first_name,然后直接传递整个$data数组给execute():

<?php $data = ['first_name' => 'ben'] ?>
<?php $sql = "INSERT INTO names (first_name) values (:first_name);" ?>

<?php $statement = $pdo->prepare($sql); ?>
<?php $statement->execute($data); ?>

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:15:57