2010-09-24 61 views
1

我写了一个小的PHP文件,它获取了发布给它的信息,然后检查以确保它不是空的。如果它不是空的,它会检查以确保用户名不存在。如果确实如此,它会重定向。如果没有,它将信息添加到MySQL数据库。我不知道问题是什么,但是当按下表单上的提交按钮之后尝试导航到浏览器时,浏览器会显示一条错误消息,指出无法显示该页面。这是代码。PHP表单验证程序/ MySQL插入

<?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"); 
} 
?> 

回答

2

更改此

if (mysql_num_rows($username) > 0) { 

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

它总是更好地检查返回在继续之前,请使用mysql_query的值。这使调试更容易。 – codaddict 2010-09-24 04:55:17

+0

这是正确的,但我认为在一行中有错误,所以让我们解决该错误的行,如果它的工作 – 2010-09-24 05:02:46

+0

我已经尝试了两种解决方案,但脚本仍然无法正常工作。也许在我的脚本中另一个错误? – 2010-09-24 15:48:36

5

你是不是在执行查询:

$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. 

喜欢的东西:

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

我已经尝试了这两种解决方案,但脚本仍然无法正常工作。也许在我的脚本中另一个错误? – 2010-09-24 15:48:03

+0

好的,对不起。我想通了......我有一个错字。然而,我有一个问题。我在那里使用了你的(@codaddict)脚本,但是现在当用户名已被占用时,它只是显示一条消息,表示重复条目....我需要它重定向到register.php?无效 – 2010-09-24 16:02:02