2017-09-23 10 views
1

Je crée une fonction dynamique pour insérer des données dans la base de données en utilisant PHP PDO.Pourquoi le nombre de variables liées ne correspond-il pas au nombre de messages d'erreur de nombre de jetons?

Voici la fonction de la classe Database.

public function insert ($table, $feilds = array()) { 

    $key = array_keys($feilds); 
    $column = implode(',', $key); 

    $ques = array(); 

    foreach ($feilds as $value) { 
     $ques[] = " ?"; 
    } 

    $ques = implode(', ', $ques); 

    $stmt = $this->_pdo->prepare("INSERT INTO $table($column) VALUES ($ques)"); 

    $x=1;  
    foreach ($feilds as $key => $value) { 
     $stmt->bindParam($x, $var); 
     $var = $value; 
     $stmt->execute();   
     $x++; 
    }  
} 

J'insérer des données comme ceci:

$data = array(
    'b_title' => 'My blog title', 
    'b_des'  => 'My blog description', 
); 
$database->insert('blog', $data); 

Mais quand je lance cette requête, il est dit

Numéro de paramètre non valide: nombre de variables liées ne correspond pas à nombre de jeton

Je ne comprends pas où la variable liée et le jeton ne correspondent pas! Comment puis-je le résoudre?

Merci.

Répondre

0

$stmt->execute(); devrait aller en dehors de la foreach

+0

OH, je suis aveugle :( –

+0

il arrive à tout le monde: P – thelmuxkriovar