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?