数据未插入Mysql / Php中的表

时间:2013-04-16 14:05:44

标签: php mysql sql-insert

不知道问题在哪里......但数据没有出现在数据库中..

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

4 个答案:

答案 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()进行散列密码是不安全的。

一个非常好的东西可以在这里阅读:它已经覆盖了很少的(足够的)文本 - 不仅仅是散列:

http://www.phptherightway.com/#password_hashing

答案 3 :(得分:0)

我知道答案部分是错误的,但我似乎无法评论你的帖子,我想这可能是因为我是新用户...

请在将此注册到互联网之前阅读SQL注入。您需要在输入中加以保护。