SQL error

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : SQL error

Re: SQL error

par yann18 » 31 juil. 2019, 10:52

il manque une parenthèse fermante à la requête.
Remplace la ligne suivante:

Code : Tout sélectionner

$req = $db ->prepare('INSERT INTO Comments (author,comment,id_post,date_content) VALUES (?,?,?,NOW()');
par

Code : Tout sélectionner

$req = $db ->prepare('INSERT INTO Comments (author,`comment`,id_post,date_content) VALUES (?,?,?,NOW() )' );
comment reste tout de même un mot clé réservé qu'il faut absolument entourés de quotes inversés

Re: SQL error

par yann18 » 30 juil. 2019, 21:37

Cette erreur est typique soit d'un mauvais type(ce qui est maintenant exclu) soit d'un mot réservé MYSQL soit d'une toute autre erreur de syntaxe ce qui loin d'être vrai au vu de ta requête.
Il se trouve que comment est un mot réservé MYSQL.L'utilisé peut poser problème. essaie de l’entourer des quotes inversés(`)

Code : Tout sélectionner

'INSERT INTO Comments (author, `comment`,id_post,date_content) VALUES (?,?,?,NOW()'
Lien pour les mots réservés: https://dev.mysql.com/doc/refman/8.0/en/keywords.html

si ça ne passe pas tu peux exécuter la requête dans phpmyadmin.

Re: SQL error

par CuriousStudent » 30 juil. 2019, 21:00

PS: la colonne est bien de type datetime

par CuriousStudent » 30 juil. 2019, 20:57

Merci beaucoup pour ta réponse !
PAr contre je ne suis pas certain de comprendre, la fonction NOW() devrait pourtant bien insérer la date ?
D'aillerus qu'es qui t'as mit sur la piste ?

Re: SQL error

par yann18 » 30 juil. 2019, 20:54

bonjour,

il t'insère tout sauf la date. Ce qui laisse supposer que la colonne date_content n'est pas de type DATETIME ou DATE.

SQL error

par CuriousStudent » 30 juil. 2019, 20:07

Bonjour,
Voilà maintenant deux jours que je rencontre un problème qui pourrait bien avoir raison de ma santé mentale.
J'ai construit une fonction permettant d'ajouter des commentaires sur un 'blog' de chat.

Voici la fonction (model)

Code : Tout sélectionner

function writeComments($postId,$pseudonyme,$comment) { $db = dbConnect(); $req = $db ->prepare('INSERT INTO Comments (author,comment,id_post,date_content) VALUES (?,?,?,NOW()'); $req ->execute(array($pseudonyme,$comment,$postId)); }
Voici la fonction de contrôle()

Code : Tout sélectionner

function writeoncomments() { $pseudonyme = $_POST['pseudo']; $comment = $_POST['comment']; $postId = $_GET['id']; writeComments($postId,$pseudonyme,$comment); require('/opt/lampp/htdocs/workphp/MCVact/view-1.php'); }


voici la fonction(routeur)

Code : Tout sélectionner

elseif ($_GET['action'] == 'post') { if (isset($_POST['comment']) AND isset($_POST['pseudo'])) { if (($_POST['comment'] && $_POST['pseudo']) > 0) { writeoncomments(); } } }
le serveur me renvoi

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 in /opt/lampp/htdocs/workphp/MCVact/models/model.php:48 Stack trace: #0 /opt/lampp/htdocs/workphp/MCVact/models/model.php(48): PDOStatement->execute(Array) #1 /opt/lampp/htdocs/workphp/MCVact/controllers/control.php(20): writeComments('2', 'SAlut', 'sa toi ') #2 /opt/lampp/htdocs/workphp/MCVact/rooter.php(25): writeoncomments() #3 {main} thrown in /opt/lampp/htdocs/workphp/MCVact/models/model.php on line 48

J'avoue ne pas comprendre d'ou vient l'erreur,
Merci d'avance pour votre aide précieuse.