php插入到不向数据库添加数据,有什么想法吗?

时间:2011-01-01 20:21:09

标签: php mysql database

我是php的新手,正在创建一个简单的登录系统。 当有人想要注册时,他们会去register.html,然后是insert.php。 下面的代码应该将表单中的数据添加到表中,但不会出现在表中。 我怀疑它可能就行:$ sql = INSERT INTO ... 唯一出现的是代码底部的echo语句 我知道可能有一个简单的答案,但我仍然找不到它。 谢谢,非常感谢任何帮助!

insert.php的代码

<?php
$email=$_POST['email'];
$name=$_POST['name'];
$password=$_POST['password'];
$con = mysql_connect("localhost","user","p@ssword");
mysql_select_db("database", $con);
$sql="INSERT INTO table_name (email, name, password)
VALUES ('$email', '$name', '$password')";  
echo"Thank you, you are now registered and can login on our homepage";
mysql_close($con);
?>

再次感谢!

2 个答案:

答案 0 :(得分:6)

您建立了连接并准备了查询,但实际上并没有执行它!您需要调用mysql_query(),传入SQL和连接句柄,以指示数据库执行该语句。

<?php
$email=$_POST['email'];
$name=$_POST['name'];
$password=$_POST['password'];
$con = mysql_connect("localhost","user","p@ssword");
mysql_select_db("database", $con);
$sql="INSERT INTO table_name (email, name, password)
VALUES ('$email', '$name', '$password')";
mysql_query( $sql, $con ) or trigger_error( mysql_error( $con ), E_USER_ERROR );
echo"Thank you, you are now registered and can login on our homepage";
mysql_close($con);
?>

既然你说你是PHP新手(也可能是数据库开发人员?),那么我还要指出PHP tutorial on SQL injection的方向,它解释了它是什么以及你需要防范的原因它 - 例如,您的示例代码易受攻击。

答案 1 :(得分:2)

此代码不起作用的原因是您没有实际进行查询的mysql_query调用:

mysql_query($sql);

然而更大的问题是您的应用程序目前非常不安全,因为您没有检查$email$name$password的有效性,所以恶意用户可以轻松地为您的数据库做些讨厌的事情。至少,使用mysql_real_escape_string来逃避它们;最好使用PDO等库来帮助确保您网站的安全。