当我调用此函数时,它没有显示错误,但未插入数据。 选中数据库连接并确认其连接类型为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 64bit
WampServer 3.0.8
PHP 7.1
MySQL 5.7
答案 0 :(得分:1)
您需要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?