簡體   English   中英

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
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

看到這里的區別: bindParam和bindValue有什么區別?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM