Votre erreur semble indiquer clairement quel est le problème:
ERROR: invalid input syntax for type timestamp: ""
Il semble que votre requête tente d'insérer une chaîne vide dans un champ PostgreSQL qui a un type de « horodatage ». Si vous insérez une chaîne non valide d'une sorte, il devrait apparaître dans l'erreur que vous RECEVOIR comme:
ERROR: invalid input syntax for type timestamp: "foobardtimestamp"
Ou, dans votre cas, si votre chaîne attendue était passée, votre erreur peut ressembler à ceci :
ERROR: invalid input syntax for type timestamp: "2002-03-11"
... mais l'erreur ne dit pas ce qui me fait soupçonner votre chaîne n'est pas réellement se passer à la requête comme vous le pensez. Le fait est, comme indiqué précédemment: PostgreSQL devrait être parfaitement capable de gérer 2002-03-11
comme une chaîne d'horodatage valide.
PostgreSQL n'aime pas insérer '' (chaîne vide) comme horodateur et va se plaindre de l'erreur que vous avez fournie.
Si vous souhaitez fournir une chaîne vide, vous devez vous assurer que vous n'avez pas de contrainte NOT NULL
sur la colonne, et vous devez utiliser null
au lieu d'une chaîne vide. Si vous n'avez pas l'intention d'envoyer une chaîne vide, je vérifierais la valeur de $pdo->quote($date)
pour m'assurer que vous obtenez la chaîne que vous voulez renvoyer de cette chaîne.
Vous pouvez également essayer de générer votre code SQL généré avant d'exécuter la requête pour vous assurer qu'elle est correcte. J'ai le sentiment, si vous le faites, il ressemblera à quelque chose comme ceci:
INSERT INTO dates(date) VALUES('')
En outre, pour ce que ça vaut, votre exemple dit que vous êtes en cours d'exécution: $pdo->query($date);
quand je suis assez certain que vous voulez: $pdo->query($query);
Est-ce que $ pdo pointe vers un objet PDO? Quelle est la valeur de retour du devis d'appel? – Zed
Oui, j'ai oublié de mentionner. $ pdo pointe vers l'objet pdo – Roland