Je trouve que mon insertion PDO MySQL ne fonctionne pasAOP déclaration préparée ne fonctionne pas
Le format de base est:
INSERT INTO `my_table` (id, email_hash, dob, 1, 6, 10) VALUES (?, ?, ?, ?, ?, ?)
Il est en fait comme ceci:
$InsertQuery = $db->prepare("INSERT INTO `my_table` (id, email_hash, dob, $NumbersString) VALUES (?, ?, ?, $QuestionMarkString)");
$InsertQuery->execute(array("$ID, $hashed_email, $dob, $YesNoString"));
La variable $QuestionMarkString
remplit (correctement) le nombre d'espaces réservés de point d'interrogation.
La variable $YesNoString
est une chaîne de "1" de longueur appropriée pour agir en tant que marqueurs dans la base de données.
Donc, même quand je vois que la première partie de la requête devient avec succès formée comme:
INSERT INTO `my_table` (id, email_hash, dob, 1, 6, 10) VALUES (?, ?, ?, ?, ?, ?)
... et le contenu du tableau exécuter avec succès devient:
52, $2y$10$h9yXWUd8edQVMTSwZrX7T.pJ/C1pLDE9b081OtGmG6nbAtXr7lASK, 29062016, 1, 1, 1
. L'insert ne se produit toujours pas. Je reçois une erreur PHP disant:
PHP Avertissement: PDO :: prepare(): SQLSTATE [42000]: Erreur de syntaxe ou violation d'accès: 1064 Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '1, 6, 10) VALUES (?,?,?,?,?,?)' à la ligne [etc]
Je ne pense pas que vous ayez besoin des guillemets entourant les valeurs de vos tableaux, n'est-ce pas? – pmahomme
Tout à fait raison - mais quand je corrige cela, même résultat. – imagina
Qu'est-ce que '$ NumbersString'? Le '1 'devrait indiquer que quelque chose est en hausse avec cette valeur. – chris85