2010-01-23 5 views
1

Je suis nullement connu dans MySQL et continue de recevoir une erreur dans cette ligne de code:mystère erreur mysql

$sql= "INSERT INTO songs (unique_show_id, artist, date, year, city, state, venue, taper, transfered_by, source, mic_loc, lineage, uploaded_by, uploaded_on, show_notes, show_xml) 
      VALUES('$showId', '$artist', '$showDate', '$year, '$city', '$state', '$venue', '$taper', '$transferer', '$source', '$mic_loc', '$lineage', '$uploader', NOW(), '$show_notes', '$show_xml')";  

//check to see if the query went through 
      if (!mysql_query($sql,$con)){ 
       echo "query fail"; 
      die('Error: ' . mysql_error()); 
    } 

Je suis sûr que c'est quelque chose simpliste, mais je ne vois pas où l'erreur est. Le message d'erreur que je reçois est:

query failError: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ipuhgbi', 'CA', '', '', '', '', '', '', 'danwoods', NOW(), '', '<show id=\'gm198' at line 2 

Certaines des valeurs que je suis NULL sont l'insertion, mais de ce que je l'ai lu, je ne pense pas que cela devrait être un problème. Des idées?

+0

Afficher la requête remplacée. –

+0

Veuillez publier la sortie de 'DESCRIBE SONGS' dans MySQL afin que nous puissions voir quel (s) type (s) de données sont pour chaque colonne. –

Répondre

0

Il semble que la dernière citation unique sur la ligne d'erreur ne soit pas échappée.

Vous devez vous rappeler d'assainir toutes les chaînes entrant dans la requête.

0

Il y a assez peu de choses que vous devez être sûr:

  1. Vous n'insérez pas les clés primaires par le biais de requêtes (par exemple unique_show_id dans votre code)
  2. Pour connaître les numéros que vous n'utilisez des guillemets simples .
  3. Il est préférable d'utiliser la variante ensemble de dossiers qui évite l'insertion des problèmes de comptage, par exemple:
  4. Utilisez INTVAL pour les numéros et mysql_real_escaps_string pour les chaînes pour éviter les problèmes d'injections ainsi que erros de requête simples citations.

    insertion dans le champ de jeu de table = 'field_value', field2 = s field_value '// et ainsi de suite

4

manquant après citation $year.

Lorsque MySQL émet une telle erreur (near bla di bla), l'erreur est généralement juste avant la chaîne mentionnée. Dans ce cas, 'ipuhgbi' correspond à $ city, donc vous savez que c'est juste avant '$ city', et que voyons-nous là? Voila, une citation manquante.