php mysql pdo bindparam 数据未插入
php mysql pdo bindparam data not insert
当我调用这个函数时,它没有显示错误,但是没有插入数据。
已检查数据库连接并且其正常,连接类型 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 查询。
我不想要替代品,但我想要我的错误在哪里。
请帮我。我正在尝试解决它 2 天。
Windows 10 64 位
WampServer 3.0.8
PHP7.1
MySQL5.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?
当我调用这个函数时,它没有显示错误,但是没有插入数据。 已检查数据库连接并且其正常,连接类型 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 查询。 我不想要替代品,但我想要我的错误在哪里。 请帮我。我正在尝试解决它 2 天。
Windows 10 64 位
WampServer 3.0.8
PHP7.1
MySQL5.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?