2010-05-21 8 views
0

Im essayant d'insérer des données dans une table dans MySQL. J'ai trouvé/modifié du code de w3Schools et je n'arrivais toujours pas à le faire fonctionner. Voici ce que j'ai pour le moment:PHP MySQL Insérer des données

<?php 
$rusername=$_POST['username']; 
$rname=$_POST['name']; 
$remail=$_POST['emailadr']; 
$rpassword=$_POST['pass']; 
$rconfirmpassword=$_POST['cpass']; 

if ($rpassword==$rconfirmpassword) { 

    $con = mysql_connect("host","user","password"); 
    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
     mysql_select_db("mydbname ", $con); 
    } 

    mysql_query("INSERT INTO members (id, username, password) 
    VALUES ('4', $rusername, $rpassword)"); 


?> 

Ai-je commis une erreur? À ma compréhension "membres" est le nom de la table. Si quelqu'un sait ce qui ne va pas, j'apprécie l'aide.

Merci

+0

Pourquoi ajoutez-vous 4 comme identifiant? Mettez simplement 'id' comme auto-incrémenté et vous n'aurez plus à le faire. En outre, id doit être un nombre entier, donc pas besoin d'utiliser des guillemets – nico

+2

Il s'agit d'une vulnérabilité d'injection SQL. Veuillez utiliser des requêtes paramétrées (voir PHP docs pour PDO: http://php.net/pdo), ou à tout le moins escape input avec une fonction comme mysql_real_escape_string. – eyelidlessness

+0

Je viens de mettre 4 pour le tester. Maintenant, il génère un nombre aléatoire. Et oui, j'ai entendu parler de l'injection SQL et j'utilise mysql_real_escape_string pour la connexion. Je ne l'ai pas encore ajouté au compte de création. – nosedive25

Répondre

4

La requête de votre code entraîné est:

INSERT INTO members (id, username, password) VALUES ('4', rusername, rpassword) 

Notez que dans la chaîne SQL doit être entouré par '.

jour donc votre code à ceci:

mysql_query("INSERT INTO members (id, username, password) 
      VALUES ('4', '$rusername', '$rpassword')"); 
+0

Je l'ai mis à jour mais je ne vois toujours pas de nouvelle annonce dans la base de données. – nosedive25

+0

s'il vous plaît poster votre schéma db – Amirshk

+0

Je l'ai corrigé merci pour l'aide – nosedive25

0

Et votre nom de base de données?

mysql_select_db("mydbname ", $con); 

Même si elle est appelée mydbname il y a un char espace bizarre là-dedans ..

Vous pouvez également faire

mysql_query("use mydbname", $con); 

EDIT

Essayez d'inclure la base de données drapeau de connexion dans la requête, et aussi remplacer '4' (que nico a dit si c'est un autoinc rement key [id], ce doit être un entier, sans guillemets) par null:

mysql_query("INSERT INTO members VALUES 
      (null, '$rusername', '$rpassword');", $con); 
+0

Je le change donc il serait plus facile à lire. – nosedive25

Questions connexes