2017-09-10 6 views
0

Lorsque j'appelle cette fonction, il ne montre aucune erreur, mais les données ne sont pas insérées. La connexion à la base de données est vérifiée et son OK, type de connexion PDO.php mysql pdo bindparam données ne pas insérer

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(); 

} 

La connexion à la base de données est correcte. Parce qu'il fonctionne sur les requêtes SELECT et DELETE, mais pas sur les requêtes INSERT et UPDATE. Je ne veux pas d'alternative mais je veux où est mon bug. S'il vous plaît aidez-moi. J'essaye de le résoudre pendant 2 jours.

de Windows 10 64bit
WampServer 3.0.8
PHP 7.1
MySQL 5.7

+0

https://stackoverflow.com/questions/19221692/cannot-insert- into-mysql-database-using-pdo-no-errors –

+0

Erreur de même type mais non résolue. –

Répondre

1

Vous devez bindValue() au lieu de bindParam(). Changer vous boucle foreach pour

foreach ($data as $key => $value) { 
     $stmt->bindValue(':'.$key, $value); 
    } 

Voir la doc:

http://php.net/manual/en/pdostatement.bindvalue.php

Voir la différence ici: What is the difference between bindParam and bindValue?

+0

Je l'ai essayé. Toujours pas fonctionne. –

+0

essayer d'imprimer l'erreur 'print_r ($ stmt-> errorInfo());' après l'exécution –

+0

Merci. Problème résolu. Ce sera bindValue(). –