2010-09-24 57 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