好的,所以我写了一个register.php脚本,当命令尝试执行时,我得到一个意外的T变量。 错误位于第15行
('$_Post[username]','$_Post[sha_pass_hash]','$_Post[email]','2')";
根据Dreamweaver第20行的
,我的语法也有第二个错误 die('Error: ' . mysql_error());
如果有人能提供帮助,我们将不胜感激。提前谢谢。
答案 0 :(得分:3)
直接从帖子插入数据库总是一个坏主意。这就是PHP目前陷入非直观魔术引用的原因。
您至少应该使用mysql_real_escape_string()来转义数据。例如:
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
$query = "INSERT INTO users VALUES (
'" . mysql_real_escape_string($_POST["username"]) . "',
'" . mysql_real_escape_string($_POST["sha_pass_hash"]) . "',
'" . mysql_real_escape_string($_POST["email"]) . "',
'2'
)";
mysql_query($query);
您必须这样做的原因是基于安全性。例如,如果某些恶意将用户名字段设置为'); DROP TABLE users;
,而不首先转义数据。您最终会盲目地运行以下查询:
INSERT INTO users VALUES (''); DROP TABLE users;
当然,这对你的申请来说不会很好。
这是你应该做的最低。
实际上你应该真正转向MySQLi这是一个更现代的MySQL界面。 这是一个例子
$mysqli = new mysqli('mysql_host', 'mysql_user', 'mysql_password', 'mysql_database');
$query = "INSERT INTO users VALUES (
'" . $mysqli->real_escape_string($_POST["username"]) . "',
'" . $mysqli->real_escape_string($_POST["sha_pass_hash"]) . "',
'" . $mysqli->real_escape_string($_POST["email"]) . "',
'2'
)";
$mysqli->query($query);
您甚至可以在程序风格中使用MySQL。因此,如果面向对象的编程没有达到你的目标,那么你将不会遇到MySQLi问题。
希望有所帮助。
答案 1 :(得分:2)
($_Post["username"],$_Post["sha_pass_hash"],$_Post["email"],'2')";
删除引号..
答案 2 :(得分:1)
($_Post["username"],$_Post["sha_pass_hash"],$_Post["email"],'2')";
答案 3 :(得分:1)
($_POST["username"],$_POST["sha_pass_hash"],$_POST["email"],'2')";
丢失变量周围的单引号:)
答案 4 :(得分:1)
使用它:
('".$_Post[username]."','".$_Post[sha_pass_hash]."','".$_Post[email]."','2')