2011-04-14 3 views
1

J'essaie d'écrire des informations dans une table db et ça ne marche pas du tout. J'ai joué avec ça pendant des heures. peut-être que si quelqu'un regarde le code, il verra quelque chose que j'ai raté. Ma logique est qu'elle se connecte au serveur db, ouvre la base de données mydb, passe à table mod, et écrit dans id, fname et lname, puis ferme la connexion.INSERT INTO ne pas écrire dans la base de données?

également, id est défini sur auto_increment. d'après ce que je peux dire, ça devrait marcher mais ce n'est pas le cas.

$con = mysql_connect("localhost","user","pass"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db('mydb', $con); 

//assign 
$query = "INSERT INTO 'mod' (id, fname, lname) VALUES ('', 'bill', 'smith')"; 
if (!$query){ 
dir ("Unable to create the record:" . mysql_error()); 
exit; 
} 
mysql_query($query); 
mysql_close($con); 
+0

Avez-vous besoin du '' '' autour du mod? – tom502

+0

Il est évident que vous l'avez manipulé =) La commande if (! $) Vérifie une valeur de chaîne pour false. Et la position de mysql_query est un peu en retard par rapport à cette déclaration if. –

Répondre

0

vous faites un faux jeu en référençant le nom de table. Il devrait être `mod `au lieu de 'mod'. i.e `[backtick] not '[une seule citation].

et deuxième erreur est votre déclaration die ... au lieu de dir il faut mourir ....

INSERT INTO `mod` (id, fname, lname) VALUES ('', 'bill', 'smith'); 

Ensuite, vous pouvez également ignorer l'insertion de la valeur pour le champ id qui est autoincreament

donc il peut être

INSERT INTO `mod` (fname, lname) VALUES ('bill', 'smith'); 
+0

qui était mon problème.merci beaucoup pour l'entrée! – john

1

Il devrait y avoir pas de guillemets autour de « mod »

// edit:
En outre, la partie if (!query) est pas vraiment utile à ce moment-là, car il vérifie la chaîne, pas le résultat. Vous devriez vérifier le résultat de mysql_query() et si cela a échoué, vous devriez sortir un message d'erreur.

+0

ne fonctionnait pas. :( – john

+0

Toutes les erreurs? Essayez 'echo mysql_error()' après la 'mysql_query()' – gnur

1

Changer votre requête:

$query = "INSERT INTO mod (fname, lname) VALUES ('bill', 'smith')"; 

Votre identifiant d'incrémentation automatique sera ajoutée par la base de données automatiquement.

MISE À JOUR

Votre code d'erreur devrait ressembler à ceci au travail:

$query = "INSERT INTO mod (fname, lname) VALUES ('bill', 'smith')"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
0

Vous avez fait appeler mysql_query pour exécuter la requête (pour voir le mysql_error).

+0

n'est pas ce que j'ai fait? Mysql_query ($ query); – john

+0

Voir la réponse ci-dessous par @gnur – Jon

+0

Vous exécutez la requête après que vous faites la commande if (! $ query) vérifie et génère ensuite mysql_error(). Au moment où vous faites la variable de requête if (! $ query) $ est toujours une chaîne et sera toujours évaluée comme vraie. dir '... – rATRIJS

0

Vous pouvez également essayer:

$query = "INSERT INTO mod SET fname='bill', lname='smith'"; 

Et la colonne id serait par magie auto-incrémentées.

+0

Oui, cela peut aussi être réalisé en utilisant '(fname, lname) VALUES (' bill ',' smith ')' – gnur