gpt4 book ai didi

php mysql pdo bindparam数据未插入

转载 作者:行者123 更新时间:2023-11-29 10:37:36 25 4
gpt4 key购买 nike

当我调用这个函数时,它没有显示错误,但数据未插入。检查数据库连接并确定,连接类型 PDO。

public function insert(){
$table = "category";
$data = array(
'cat_id' => 5,
'cat_name_en' => 'Science',
'cat_info' => 'All about nature',
'cat_tags' => 'Physics, chemistry'
);
$keys = implode(', ', array_keys($data));
$values = ":".implode(", :", array_keys($data));
echo $sql = "INSERT INTO $table($keys) VALUES($values)";
$stmt = $this->db->prepare($sql);
foreach ($data as $key => $value) {
$stmt->bindParam(':'.$key, $value);
}
return $stmt->execute();

}

数据库连接正常。因为它适用于 SELECT 和 DELETE 查询,但不适用于 INSERT 和 UPDATE 查询。我不想要替代方案,但我想我的错误在哪里。请帮我。我花了两天时间尝试解决这个问题。

Windows 10 64 位
WampServer 3.0.8
PHP 7.1
MySQL 5.7

最佳答案

您需要使用bindValue()而不是bindParam()。将 foreach 循环更改为

foreach ($data as $key => $value) {
$stmt->bindValue(':'.$key, $value);
}

查看文档:

http://php.net/manual/en/pdostatement.bindvalue.php

在这里查看差异:What is the difference between bindParam and bindValue?

关于php mysql pdo bindparam数据未插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46140187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com