php mysql pdo bindparam数据不插入

时间:2017-09-10 11:25:21

标签: php mysql pdo insert bindparam

当我调用此函数时,它没有显示错误,但未插入数据。 选中数据库连接并确认其连接类型为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

1 个答案:

答案 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?