PDOException: SQLSTATE[42000]: Syntax error or access violation:

Résolu
Bonjour,

J'obtient cette erreur : PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de '))' à la ligne 2

Voila mon code :

<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="apparence.css" rel="stylesheet" type="text/css" title="Mon style"/>
<title>Mon premier fichier HTML</title>
</head>

</body>
<?php
try // Connexion base de données
{
$bdd = new PDO('mysql:host=localhost;dbname=ambulance;charset=utf8', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<form method="post" action="<?php $_SERVER['PHP_SELF']?>">
<p> Vehicule : <input type="text" name="vehicule"/>
<p> Date <input type="text" name="date" value="JJ-MM-AAAA" /> </p>
<p> Quantité de carburant <input type="number" name="quantite_carburant"/> Litres </p>
<p> Kilométrage <input type="number" name="kilometre" /> Km </p>
<input type="submit" value="Envoyer" name="bouton" />
</form>

<?php
if(!empty($_POST))
{
if(!empty($_POST['vehicule']) AND !empty($_POST['date']) AND !empty($_POST['quantite_carburant']) AND !empty($_POST['kilometre']))
{
$vehicule = $_POST['vehicule'];
$date = $_POST['date'];
$quantite_carburant = $_POST['quantite_carburant'];
$kilometre = $_POST['kilometre'];

global $bdd;
$req = $bdd->prepare ('INSERT INTO carburant (vehicule, date, quantite_carburant, kilometre, date_ajout)
VALUES (:vehicule, :date, :quantite_carburant, :kilometre, DATE())');
$req -> execute (array (
'vehicule' => $vehicule,
'date' => $date,
'quantite_carburant' => $quantite_carburant,
'kilometre' => $kilometre
));

echo "La saisie à bien été réalisé";
}
else { echo "Erreur dans le formulaire";}
}
else {}
?>
</body>
</html>


Merci d'avance pour vos réponse

Arthur32810

1 réponse

  1. Bonjour

    Tu utilises la fonction DATE() de mysql de manière incorrecte. Il faut lui donner une expression en paramètre, et cette fonction extrait une date de cette expression.
    Je suppose que tu voulais mettre
    CURDATE()
    sans paramètre, ou
    DATE(NOW())
    par exemple
    1. Bonjour,

      Ça ne vient pas de là car dans ma base de donnée, j'ai mis un vachar 255.

      J'ai réussi à résoudre le problème en créant un autre page.

      Bonne journée