MySQL和PHP意外的T_Variable

时间:2012-07-10 06:28:58

标签: php mysql

好的,所以我写了一个register.php脚本,当命令尝试执行时,我得到一个意外的T变量。 错误位于第15行

('$_Post[username]','$_Post[sha_pass_hash]','$_Post[email]','2')";

根据Dreamweaver第20行的

,我的语法也有第二个错误
    die('Error: ' . mysql_error());

如果有人能提供帮助,我们将不胜感激。提前谢谢。

5 个答案:

答案 0 :(得分:3)

STOP

直接从帖子插入数据库总是一个坏主意。这就是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')