不知道问题在哪里......但数据没有出现在数据库中..
if(isset($_POST['sign up']))
{
$name=$_REQUEST['username'];
$password=$_REQUEST['password'];
$fname=$_REQUEST['fname'];
$lname=$_REQUEST['lname'];
$email=$_REQUEST['email'];
mysql_query("insert into sign_up ('username','password','fname','lname','email') VALUES('$name' , md5('$password') , '$fname' , '$lname','$email'");
}
答案 0 :(得分:3)
问题在于INSERT
子句中的列,它们应不用单引号括起来,因为它们是标识符而不是字符串文字。
insert into sign_up (username,password,fname,lname,email) VALUES(...)
由于它们都不是reserved keywords,因此反引号在它们周围是可选的。
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:0)
使用mysql_error()来获取正在发生的错误。如果这是您的所有代码,则看起来您不是首先建立数据库连接。
答案 2 :(得分:0)
只需删除数据库列名称周围的单引号即可:
mysql_query("insert into sign_up (username, password, fname , lname , email) VALUES('$name' , md5('$password') , '$fname' , '$lname','$email'");
您还需要在插入之前至少转义数据,并且使用MD5()
进行散列密码是不安全的。
一个非常好的东西可以在这里阅读:它已经覆盖了很少的(足够的)文本 - 不仅仅是散列:
答案 3 :(得分:0)
我知道答案部分是错误的,但我似乎无法评论你的帖子,我想这可能是因为我是新用户...
请在将此注册到互联网之前阅读SQL注入。您需要在输入中加以保护。