当我运行这段代码时,它应该把ben
存储在数据库中,但是,它在first_name
列中显示了Array
,并给出了字符串转换错误,我该如何消除这个错误呢?
<?php $data = ['first_name' => 'ben'] ?>
<?php $sql = "INSERT INTO names (first_name) values (?);" ?>
<?php $statement = $pdo->prepare($sql); ?>
<?php $statement->execute([$data]); ?>
1条答案
按热度按时间iszxjhcz1#
PDO有两种绑定参数的方法,第一种是位置绑定,在这个例子中,你传递给
execute()
的数组应该是一个 indexed 数组,其值的顺序和你希望它们绑定到问号的顺序相同:注意,值 * 必须 * 与它们的使用顺序相同:
另一种(在我看来,上级的)方法是使用命名参数。这里,你需要使用一个 associative 数组,它的键与你的参数占位符同名。
现在,它们的顺序无关紧要,因为它们是由数组名而不是位置来键控的:
您的问题(除了@Sammitch指出的额外数组 Package 之外)是您以一种不兼容的方式将这两种技术混合在一起--您使用的是位置参数,但提供了一个关联数组。因此,在您的情况下,您要么需要使用位置参数,要么需要使用索引数组:
或命名参数和关联数组: