2013-11-01 55 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