Je veux créer une fonction qui peut insérer des données dans la base de données à l'aide PDO préparée déclarationAOP préparé avec déclaration des variables dynamiques
public function test() {
$this->insert([
'first_name' => $_POST['first_name'],
'last_name' => $_POST['last_name'],
'email' => $_POST['email']
]);
}
public function insert(array $data) {
$fields = '';
$bindValues = '';
$values = [];
foreach($data as $k => $v) {
$fields .= $k . ', ';
$bindValues .= ':' . $k . ', ';
$values[$k] = $v;
}
$fields = rtrim($fields, ', ');
$bindValues = rtrim($bindValues, ', ');
$insert = $this->db->prepare("
INSERT INTO
:table
(:fields)
VALUES
(:values)
");
$insert->execute([
'table' => $this->table,
$values
]);
}
dumped variables:
1. $fields
2. $bindValues
3. $values
'first_name, last_name, email' (length=28)
':first_name, :last_name, :email' (length=31)
array (size=3)
'first_name' => string 'Nikola' (length=6)
'last_name' => string 'Misic' (length=5)
'email' => string '[email protected]' (length=13)
Et je reçois une erreur
Appel à une fonction membre execute() sur booléen
Il y a quelque chose qui cloche avec le SQL, et je ne sais pas quoi ou comment le déboguer.
Vous ne pouvez pas lier des tables ou des colonnes. Une liaison doit avoir une valeur également. – chris85