-3

我做错了什么?

$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

4 回答 4

3

你应该试试

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

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

于 2012-11-19T09:50:00.347 回答
3

这是正确的INSERT语法:

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

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

于 2012-11-19T09:50:18.587 回答
1

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

应该

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

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

您应该认真阅读一些有关 SQL 的示例和内容。

于 2012-11-19T09:51:01.623 回答
1

你做错了什么:

  1. 你没有提供足够的信息来回答这个问题。
  2. 您不使用 PDO 代替 mysql_query。
  3. 您的 SQL(可能)容易受到 SQL 注入的攻击。
  4. 您使用or die构造而不是异常。
  5. 您向用户显示 MySQL 错误消息。
  6. 您混合使用 INSERT 和 UPDATE 查询的语法。

您想要的查询是(前提是 $text 和 $addby 被正确转义以防止 SQL 注入)

INSERT INTO messages (`text`, `from`) VALUES ('$text', '$addedby')
于 2012-11-19T09:53:54.630 回答