2010-09-24 6 views
1

J'ai écrit un petit fichier PHP qui récupère les informations qui y ont été postées, puis vérifie que tout n'est pas vide. S'il n'est pas vide, il vérifie que le nom d'utilisateur n'existe pas déjà. Si c'est le cas, il redirige. Sinon, il ajoute les informations à la base de données MySQL. Je ne sais pas quel est le problème, mais lorsque j'essaie d'y accéder après avoir appuyé sur le bouton de soumission du formulaire, le navigateur affiche une erreur indiquant que la page ne peut pas être affichée. Voici le code.PHP Form Validator/MySQL Insert

<?php 
$firstname = $_POST['fname']; 
$lastname = $_POST['lname']; 
$email = $_POST['email']; 
$username = $_POST['user']; 
$password = $_POST['pass']; 


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

mysql_select_db("zach_blogin", $con); 

$query="SELECT username FROM members WHERE username=$username"; 



if (mysql_num_rows($username) > 0) { 
    header("Location: register.php?invalid"); 
} else { 
    $sql=("INSERT INTO members (username, password, FirstName, LastName, Email) 
    VALUES ($username, $password, $firstname, $lastname, $email)"); 
    if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
else { 
    header("Location: register.php?required"); 
} 
?> 

Répondre

2

Modifier cette

if (mysql_num_rows($username) > 0) { 

à

if (mysql_num_rows(mysql_query($query)) > 0) { 
+0

Il est toujours préférable de vérifier le retour valeur de mysql_query avant de continuer. Cela facilite le débogage. – codaddict

+0

c'est juste mais je pense que quelque chose ne va pas dans une ligne, alors laissons la solution sur cette mauvaise ligne, si cela fonctionne –

+0

J'ai essayé les deux solutions, mais le script ne fonctionne toujours pas. Peut-être une autre erreur dans mon script? –

5

Vous n'êtes pas exécuter la requête:

$query="SELECT username FROM members WHERE username=$username"; 
//You need to execute the query here before you get num of rows. 
if (mysql_num_rows($username) > 0) // also mysql_num_query takes an object. 

Quelque chose comme:

$query="SELECT username FROM members WHERE username=$username"; 
if(($result = mysql_query($query)) !== false) { 
    if (mysql_num_rows($result) > 0) { 
    ..... 
    } 
} 
+0

J'ai essayé les deux solutions, mais le script ne fonctionne toujours pas. Peut-être une autre erreur dans mon script? –

+0

Ok, désolé. Je l'ai compris ... J'ai fait une faute de frappe. J'ai cependant un problème. J'ai utilisé votre script (@codaddict) là, mais maintenant, quand le nom d'utilisateur est déjà pris, il affiche simplement un message indiquant une entrée en double .... Je dois le rediriger vers register.php? Invalide –