Mysql/Php中未插入表的数据

Mysql/Php中未插入表的数据,php,mysql,sql-insert,Php,Mysql,Sql Insert,4.我不知道问题出在哪里。。但是数据库中没有显示数据 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','pas

4.我不知道问题出在哪里。。但是数据库中没有显示数据

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

问题在于
INSERT
子句中的列,它们应该用单引号括起来,因为它们是标识符而不是字符串文本

insert into sign_up (username,password,fname,lname,email) VALUES(...)
因为它们都不是,所以它们周围的反勾号是可选的


作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用
PreparedStatements
可以避免在值周围使用单引号


使用mysql\u error()获取正在发生的错误。如果这是您的全部代码,看起来您并不是在首先建立数据库连接。

只需删除数据库列名周围的单引号,就可以了:

mysql_query("insert into sign_up (username, password, fname , lname , email) VALUES('$name' , md5('$password') , '$fname' , '$lname','$email'");
您还需要在插入之前至少转义数据,并且使用
MD5()
散列密码是不安全的

这里有一个非常值得一读的地方:它用很少(足够)的文本覆盖了很多内容,而不仅仅是散列:


我知道答案部分的位置不对,但我似乎无法对你的帖子发表评论,我想这可能是因为我是一个新用户


请先阅读SQL注入,然后再将其放到internet上。您需要对输入进行保护。

必须注意,您不应该使用不推荐的mysql_*函数。相反,强烈建议使用mysqli_*或PDO。更多信息:此问题已结束,但您只需在mysql\u查询结束前添加一个小括号,然后再使用双引号结束查询即可。试试看,这将简单地解决您的问题