2012-02-27 9 views
4

Je n'arrive pas à faire fonctionner cela, continue à recevoir un message d'erreur.Pourquoi ma requête MySQL échoue

Erreur

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 '-mail, password, 
birth_date, age, sex, profile_text, zip_code, zip_code_state, c' at line 1 

code

mysql_query("INSERT INTO users (username, e-mail, password, birth_date, age, sex, 
     profile_text, zip_code, zip_code_state, coins, rank, profile_visits, 
     profile_likes, profile_image, profile_points, activated, deleted, reg_time, 
     last_active_time, reg_ip) 
    VALUES ('$randomName', '[email protected]', 'awd', '21/05/1990','0','2', 
     '0','4306','Sandnes','0','user','0','0','$image','0','0','0','$time', 
     '$time','0')") 
or die(mysql_error()); 

Répondre

9

Surround e-mail avec ... accents graves

`e-mail`, 

Vous ne pouvez pas laisser tomber une il - autrement.

+0

qui est correct - aussi, je trouve Lorsque j'ai des erreurs comme ça, je divise la requête en plusieurs lignes (par exemple, une colonne par ligne de texte), et le numéro de ligne est plus utile pour résoudre mon erreur. – jbnunn

2

le signe - est un symbole réservé dans SQL, besoin d'envelopper e-mail par exemple `e contre-apostrophes-mail``

0

Si vous utilisez php pour cette apostrophes n'utilise pas ARROUND des variables, ils ne seront pas analysé.

'$randomName' = wrong 
either use "$randomName" 
or use "'.$randomName.'" 
+0

L'OP a utilisé des guillemets doubles. – alex

+0

En fait, les guillemets doubles dans les requêtes sql ne sont jamais meilleurs que les simples, car ils sont pour les noms de champ/table (ainsi que backtick) selon ansi sql – zerkms

+0

L'OP n'était pas là quand j'ai posté, je faisais référence à l'article original. Et le point deux mysql ne fonctionne pas en tant qu'utilisateur standard ansi sql –

1

Règle générale: les noms de colonnes dans les concaténer et les apostrophes inverses des variables de chaîne pour une meilleure lisibilité, le format de date MySQL est Ymd (1990-05-21)

mysql_query("INSERT INTO users (`username`, `e-mail`, `password`, `birth_date`, `age`,`sex`,  
    `profile_text`, `zip_code`, `zip_code_state`, `coins`, `rank`, `profile_visits`, 
    `profile_likes`, `profile_image`, `profile_points`, `activated`, `deleted`, `reg_time`, 
    `last_active_time`, `reg_ip`) 
VALUES ('".$randomName."', '[email protected]', 'awd', '1990-05-21','0','2', 
    '0','4306','Sandnes','0','user','0','0','".$image."','0','0','0','".$time."', 
    '".$time."','0')") 
or die(mysql_error()); 
Questions connexes