2010-10-09 5 views
1

J'essaie d'insérer une donnée de sérialisation dans mySQL en utilisant PDO et j'obtiens une erreur de syntaxe. Ai-je manqué quelque chose?PDO prepare Insérer une erreur de sérialisation de données

Certains codage simplifié:

$test['1'] = "one"; 
$condition = serialize($test); 
$stmt = $dbh->prepare("INSERT INTO weather(condition) VALUES (:condition)"); 
$stmt->bindParam(":condition",$condition); 
$stmt->execute(); 

$stmt->debugDumpParams() montre

SQL: [67] INSERT INTO weather(condition) 

VALEURS (: condition) Params: 1 clés: Nom: [10]: état paramno = -1 nom = [10] ":: condition" is_param = 1 param_type = 2

print_r($stmt->errorInfo()) montre

Array ([0] => 42000 [1] => 1064 [2] => Vous avez une erreur dans votre syntaxe SQL; vérifier le manuel que correspond à votre serveur MySQL version pour la bonne syntaxe à utiliser près de 'condition) VALEURS (' a: 1: {i: 1; s: 3: \ "one \";} ')' à la ligne 1 )

Répondre

2

La solution est en fait très simple. Condition est un mot réservé dans MySQL. Vous ne pouvez pas l'utiliser comme nom de votre colonne.

Vous pouvez trouver la liste complète des mots réservés pour MySQL sur leur page Web here et here.

0

Que se passe-t-il lorsque vous le définissez comme une chaîne spécifique?

$stmt->bindParam(':condition',$condition,PDO::PARAM_STR);
+0

Il donne exactement le même message d'erreur – SteD

Questions connexes