SQL Syntax error, d'accord, mais où ??
Résolu/Fermé
Kopros
Messages postés
595
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
-
Modifié par Kopros le 8/08/2013 à 15:22
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 20 août 2013 à 18:26
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 20 août 2013 à 18:26
A voir également:
- SQL Syntax error, d'accord, mais où ??
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Sql lister les tables ✓ - Forum Programmation
- Error 0x80070643 - Accueil - Windows
- Cpu over temperature error - Forum Matériel & Système
- 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 ✓ - Forum MySQL
3 réponses
Utilisateur anonyme
8 août 2013 à 15:59
8 août 2013 à 15:59
Bonjour
Je ne crois pas que ça vienne de la date, l'erreur est détectée dès la parenthèse.
Pour les quotes, il n'y a pas à essayer quoi que ce soit :
Il ne faut pas de quotes autour des noms de tables ou champs, ou alors seulement des "quotes chelou" comme tu dis.
Par contre, il en faut autour des données (VALUES) non numériques.
Si son met des apostrophes simples (du 4) autour des noms de champs, on obtient, on obtient presque ton erreur, mais sans la parenthèse.
Enlève les quotes autour des noms de champs et l'espace avant la parenthèse.
Je ne crois pas que ça vienne de la date, l'erreur est détectée dès la parenthèse.
Pour les quotes, il n'y a pas à essayer quoi que ce soit :
Il ne faut pas de quotes autour des noms de tables ou champs, ou alors seulement des "quotes chelou" comme tu dis.
Par contre, il en faut autour des données (VALUES) non numériques.
Si son met des apostrophes simples (du 4) autour des noms de champs, on obtient, on obtient presque ton erreur, mais sans la parenthèse.
Enlève les quotes autour des noms de champs et l'espace avant la parenthèse.
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
8 août 2013 à 15:23
8 août 2013 à 15:23
Salut,
tu construits ta requête comment ?
tu construits ta requête comment ?
Kopros
Messages postés
595
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
89
Modifié par Kopros le 8/08/2013 à 16:00
Modifié par Kopros le 8/08/2013 à 16:00
Elle est faite dans une fonction d'une class que j'ai faite pour traiter toutes les requêtes SQL très simplement dans le code.
Voici cette fonction :
Voilà, la fonction chk_value s'occupe notamment de renvoyer la valeur avec les quotes.
Cette fonction a toujours bien marché, sauf là ^^
PS : sur CCM, les quotes de la touche 7 sont remplacées par les simples quotes (de la touche 4)
Voici cette fonction :
public function mysql_insert($table,$values,$primary_key='',$primary_key_force=false){ $field_names=$this->get_mysql_fields($table); $primary_key=(strlen($primary_key)==0)?$field_names[0]:$primary_key; $fields=''; $vals=''; if(array_key_exists(0,$values)){ foreach($field_names as $f){if ($f!=$primary_key||$primary_key_force)$fields.='''.$f.'',';} foreach($values as $v){$vals.=$this->chk_value($v).',';} } else{ foreach($field_names as $f){ if ($f!=$primary_key||$primary_key_force){ $fields.='''.$f.'','; $vals.=$this->chk_value($values[$f]).','; } } } $fields=substr($fields,0,-1); // On enlève les dernières virgules $vals=substr($vals,0,-1); mysql_query('INSERT INTO '.$table.' ('.$fields.') VALUES ('.$vals.');') or die ('Erreur lors de l\'enregistrement.<br/>'.mysql_error()); return mysql_insert_id(); }
Voilà, la fonction chk_value s'occupe notamment de renvoyer la valeur avec les quotes.
Cette fonction a toujours bien marché, sauf là ^^
PS : sur CCM, les quotes de la touche 7 sont remplacées par les simples quotes (de la touche 4)
20 août 2013 à 18:26
Comme tu le pensais l'erreur ne venait pas de la date, ni des quotes.
Les quotes de la touche 7 (désolé je ne sais pas comment elles s'appellent) sont bien celles que je mets autour des noms des champs. CCM les interprète comme des quotes simples standard.
L'erreur en question venait du fait que je passe par une fonction que j'ai faite pour tous les traitement SQL.
J'avais mis à jour cette fonction, en changeant l'ordre des paramètres.
Sauf que j'ai oublié de mettre à jour à l'appel, et en fait le nom de la table était mal renseigné.
Voilà, comme dans beaucoup de cas, l'erreur se situait donc entre la chaise et l'écran !