Question

Vous ne trouvez pas le bug ici, pensez donc ce script est tout fagged up, voir peut encore aucun signe de succès en tant que tel.
Le problème est lorsque le formulaire est frappé avec les détails spécifiés par exemple le nom d'utilisateur, mot de passe et une adresse e-mail ne sont pas insérés dans la base de données MySQL et je suis incapable de vérifier par PHP « Comment vérifier si les détails sont présents dans la base de données? ».

   <?php
    ob_start();
    $host="localhost"; // Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password 
    $db_name="cosmos"; // Database name 
    $tbl_name="members"; // Table name

    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");




    // Define $myusername and $mypassword and $mail
    $user=$_POST['myusername'];
    $pass=$_POST['mypassword'];
    $user = stripslashes($user);
    $pass = stripslashes($pass);
    $user = mysql_real_escape_string($user);
    $pass = mysql_real_escape_string($pass);
    $pass = md5($pass);
    $mail=$_POST['email'];

    $sql = "INSERT INTO `cosmos`.`members` (`id`, `username`, `password`, `email id`) VALUES (NULL, \'$user\', \'$pass\', \'$mail\'), (NULL, \'\', \'\', \'\');";
    $result=mysql_query($sql);
    echo "Pass!"; //dont know how to verify :)
    ob_end_flush();
    ?>

Pouvez-vous corriger cela ou donner une nouvelle, merci à l'avance!

Était-ce utile?

La solution

Vous ne devriez pas échapper aux guillemets simples:

$sql = "INSERT INTO `cosmos`.`members` (`username`, `password`, `email id`) VALUES ('$user', '$pass', '$mail');";

Aussi, ne pas oublier de faire ceci:

$mail = mysql_real_escape_string($_POST['email']);

Autres conseils

Pour déterminer si quelque chose est entré ou non utilisation mysql_insert_id ().

Ne pas échapper aux citations de données et supprimer le « ; » à la fin:

$sql = "INSERT INTO `cosmos`.`members` (`id`, `username`, `password`, `email id`) VALUES (NULL, '$user', '$pass', '$mail')";

Pour tester si la requête a travaillé ajouter:

if(mysql_error()) {
die('There was a problem inserting the data into the database');
}

Pour vérifier l'insertion, faites:

$result=mysql_query($sql) or die("INSERT failed: " . mysql_error());

Si cela a fonctionné, le script ne se tuer. Si vous devez effectuer d'autres contrôles, comme peut-être en vous assurant qu'il n'y avait pas une violation de contrainte (nom d'utilisateur en double?), Puis faire

$result = mysql_query($sql);
if (mysql_error() === 1022) {
   $errmsg = 'Sorry, username already exists'; // or whatever you want the message to be
}

code d'erreur est le document liste complète ici .

est ** ** email id vraiment votre champ de base de données?

S'il vous plaît faire $mail = mysql_real_escape_string($mail);

pour vérifier si l'insert était Successfull utilisation mysql_insert_id () si vous utilisez une clé d'incrémentation automatique et vos contraintes sont réglées correctement.

Je recommande de vérifier à l'avance de faire une instruction select et pour autoriser uniquement certains caractères dans les noms d'utilisateur.

vous pouvez supprimer cette partie, elle ne peut gâcher votre système de connexion. vous escpaing les cordes de toute façon avec mysql_real_escape_string:

$user = stripslashes($user);
$pass = stripslashes($pass);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top