0

我的网站上有一个注册表单,Error 1054当有人尝试注册时我会收到。

PHP代码是:

$con=mysql_connect("server","database","password");
// Check connection
if (!$con)
{
    echo "Failed to connect to MySQL" . mysql_errno();
}

$sql="INSERT INTO database.table (User_ID, Name, Email, Telephone, MyPassword)
VALUES
(NULL,'$_POST[name]','$_POST[email]','$_POST[telephone]','$_POST[mypassword]')";

if (!mysql_query($sql,$con))
{
    die('Error: you fail'.mysql_errno());
}
$User_Id= mysql_insert_id();

$sql="INSERT INTO database.table (Address1, Address2, Address3, Address4)
VALUES
('$_POST[address1]','$_POST[address2]','$_POST[address3]','$_POST[address4]')";
//Inserts address into Address table


if (!mysql_query($sql,$con))
{
    die('Error: you failed' . mysql_errno());
}
echo "Thank you for registering with Market Buddy";

mysql_close($con);

我将代码放入在线编译器以获得更详细的错误描述,对于这一行:

('$_POST[address1]','$_POST[address2]','$_POST[address3]','$_POST[address4]')";

它给了我以下错误:

语法错误,意外的 t_encapsed 和空格,需要 T_String 或 T_Variable 或 T_num_string。

4

2 回答 2

0

严格首先:使用 mysqli_* 而不是 mysql_*,您的查询可能存在 sql 注入威胁,请使用准备好的语句查询...

错误 1054:这种类型的错误主要发生在列名无效时,按照我的意思检查您的表。

于 2013-09-10T11:36:06.413 回答
-1

访问数组时必须使用大括号 {}:

$sql="INSERT INTO database.table (Address1, Address2, Address3, Address4)
VALUES
('{$_POST["address1"]}','{$_POST["address2"]}','{$_POST["address3"]}','{$_POST["address4"]}')";

编辑:错误 1054 表示列错误 - 您确定提到的列存在于您的表中吗? http://dev.mysql.com/doc/refman/5.0/es/error-handling.html#error_er_bad_field_error

于 2013-09-10T11:26:21.937 回答