2010-05-13 5 views
1

Donc, c'est probablement une question débutant bête, mais je l'ai regardé et je ne peux pas le comprendre. Un peu d'arrière-plan: en pratiquant simplement une application web, un formulaire à la page 1 reprend certaines valeurs de l'utilisateur, les poste sur la page suivante qui contient le code pour se connecter à la base de données et remplir les tables pertinentes.Impossible de comprendre ce qui ne va pas avec ma déclaration php/sql

j'établir la connexion DB avec succès, voici le code qui contient la requête:

$conn->query("SET NAMES 'utf9'");   

$query_str = "INSERT INTO 'qa'.'users' ('id', 'user_name','password' ,'email' ,'dob' ,'sx') VALUES (NULL, $username, $password, $email, $dob, $sx);"; 

$result = @$conn->query($query_str); 

est ici l'erreur qui est renvoyée: requête d'insertion a échoué: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '' qa '.' users '(' id ',' nom_utilisateur ',' mot de passe ',' email ',' dob ',' s 'à ligne 1

Merci à l'avance!

+1

il n'y a pas non plus l'encodage 'de utf9' Je crois ... –

Répondre

1

à moins qu'il a changé depuis que je l'ai fait MySQL en PHP, échapper à vos db/colonne/noms de table avec des accents graves (`), non apostrophes (').

+0

si j'utilise des guillemets, j'obtiens une colonne Inconnu ... dans l'erreur 'liste des champs' – Olegious

+0

Pouvez-vous donner l'erreur spécifique, s'il vous plaît? – JustABill

+0

vous savez quoi, je l'ai essayé à nouveau, et cela a fonctionné dans myphpadmin. Merci! – Olegious

1

Un bon phpMyAdmin.Si cela fonctionne, vous avez une certaine confiance dans l'avenir, ou vous pouvez trouver comment réparer votre SQL (phpMyAdmin est pratique car il convertira votre SQL en une chaîne prête à l'emploi pour PHP.)

+0

bonne idée-c'est l'erreur que je reçois phpmyadmin: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '' qa '.' users '(' id ',' user_name ',' mot de passe ',' email ',' dob ',' sx ') VALEURS (NULL, 'à la ligne 1 ) – Olegious

+0

Heh heh ... pas très utile en soi, je suppose, mais faire des tentatives répétées est beaucoup plus facile que de le faire via HTTP! – Smandoli

0

Vous devez échapper à vos noms de colonnes avec un backtick (`) au lieu de (')

Vous devez également échapper correctement les valeurs réelles que vous insérez ainsi (utiliser une seule citation)

0

OMG pas une seule bonne réponse

$query_str = " 
INSERT INTO `qa`.`users` (`id`, `user_name`,`password` ,`email` ,`dob` ,`sx`) 
VALUES (NULL, '$username', '$password', '$email', '$dob', '$sx')"; 

identificateurs étant cotés avec des accents graves, tandis que cordes étant cotés avec apostrophes!

et j'espère que vous avez passé toutes vos variables par mysql_real_escape chaîne avant de le mettre en question, à savoir:

$username = mysql_real_escape string($username); 

et ainsi de suite

Questions connexes