2013-11-01 89 views
0

所以,我有一個.php文件,目的是檢查某人的用戶名是否可用,然後將其存儲在數據庫中,'檢查'部分工作,然後將用戶重定向到正確的頁面,但是,數據未存儲在數據庫中。我不能讓它數據存儲在MySQL數據庫

它引用的表單來自用戶點擊的文件以實際啓用此.php文件。

(I標記的代碼應該將數據存儲在MySQL數據庫中的部分)

<?php 

$host="localhost"; 
$username="root"; 
$password="___________"; 
$db_name="test_database"; 
$tbl_name="members"; 

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$username=$_POST['username']; 
$password=$_POST['password']; 
$email=$_POST['email']; 

$username = stripslashes($username); 
$username = mysql_real_escape_string($username); 
$sql="SELECT * FROM $tbl_name WHERE username='$username'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

// If result matched $myusernametable row must be 1 row 
if($count==1){ 

header("location:register_failure.html"); 
} 
else { 
$username=$_POST['username'];//Start of code which should store data in database 
$password=$_POST['password']; 
$email=$_POST['email']; 
$sql = "INSERT INTO members (username, password, email) VALUES ('$username',          
'$password', '$email')";//End of code which should store data in database 
header("location:register_success.html"); 
} 
?> 
+1

你是否檢查過來自mysql的錯誤消息?你是否迴應了查詢以確保它是正確的?你做了什麼來調試呢? –

+3

您需要運行您創建的sql。 'mysql_query($ sql);' –

+2

您正在創建'INSERT'查詢,但並未實際執行它。 「 – 2013-11-01 20:36:04

回答

1

您指定的INSERT語句運行到$ sql中,但沒有真正運行它。在$ sql賦值和標題聲明之間添加下面這行:

$result=mysql_query($sql); 

我還強烈建議在那裏添加一些錯誤檢查。因爲現在即使查詢失敗,用戶仍然被重定向到成功頁面。

0

與此更換你的其他命令:

else { 
$username=$_POST['username'];//Start of code which should store data in database 
$password=$_POST['password']; 

$email=$_POST['email']; 

$addsql = "INSERT INTO members (username, password, email) VALUES ('$username', '$password', '$email')"; 
$dosql = mysql_query($addsql); 
header("location:register_success.html"); 
} 
0

我認爲這將是更好的,如果返回該執行的SQL語句一樣的狀況:

else { 
$username=$_POST['username'];//Start of code which should store data in database 
$password=$_POST['password']; 
$email=$_POST['email']; 
$sql = "INSERT INTO members (username, password, email) VALUES ('$username', '$password', '$email')"; 
$result = mysql_query(sql); 
if (!$result) { 
    die('SQL Error: ' . mysql_error()); 
} 
header("location:register_success.html"); 
} 

這樣用戶就知道,如果該寄存器是否成功;) 你也可以刪除「死」的部分,並用郵件, 取代它,所以如果你的註冊有問題,你會被注意到。

+0

從技術上講,我不需要狀態,因爲它將用戶重定向到文件命名; register_success.html這實際上是一個網頁,告訴他們它是成功的:) 但是,感謝您更換模具部分,這將幫助我:P – Alex