我做错了什么?

时间:2012-11-19 09:47:47

标签: php mysql sql

我做错了什么?

$addedby=$_SESSION['id'];

$text="Subject: I want to add a New Phone Name :$name   Address :$address   Phone :$phone                 Category :$category   Email :$email   Website :$website    Details :$details";
$sql = "INSERT INTO messages SET  text='$text' , from='$addedby'";
mysql_query($sql) or die('Website Under Maintanance '.mysql_error());

Id是整数,from是varchar(30)

请告诉我我做错了什么?

错误是:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'from ='1'

4 个答案:

答案 0 :(得分:3)

你应该试试

$sql = "INSERT INTO messages (`text`,`from`) values ('$text' , '$addedby')";

请注意,在组装SQL查询之前,您应该始终清理手动输入,因为SQL注入非常糟糕,并且可以很容易地对您的数据库执行任何操作...

答案 1 :(得分:3)

这是正确的INSERT语法:

INSERT INTO messages(`text`, `from`) VALUES('$text', '$addedby');

请注意:您的代码以这种方式容易被SQL Injection使用PDO或准备好的语句。有关更多信息,请参阅以下帖子:

答案 2 :(得分:1)

$sql = "INSERT INTO messages SET text='$text' , from='$addedby'";

应该是

$sql = "INSERT INTO messages (`text`,`from`) VALUES('$text','$addedby')";

请开始使用mysqliPDO代替Mysql。它被弃用了。

你应该认真阅读一些关于SQL的例子和内容。

答案 3 :(得分:1)

你做错了什么:

  1. 您没有提供足够的信息来回答这个问题。
  2. 您不使用PDO而不是mysql_query。
  3. 您的SQL(可能)容易受到SQL注入攻击。
  4. 您使用or die构造而不是例外。
  5. 您显示用户MySQL错误消息。
  6. 您混合了INSERT和UPDATE查询的语法。
  7. 您想要的查询是(假设$ text和$ addedby属性转义以防止SQL注入)

    INSERT INTO messages (`text`, `from`) VALUES ('$text', '$addedby')