【问题标题】:What Have I Done Wrong? [closed]我做错了什么? [关闭]
【发布时间】:2012-11-07 05:20:04
【问题描述】:

我做错了什么?

$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'

【问题讨论】:

  • 据我所知,您做错的事情是人们无法轻易弄清楚您的问题实际上是什么 .
  • 除此之外,SQL 查询在语法上无效,从您收到的错误消息中也可以看出这一点。阅读the manual 是处理任何事情的先决条件。
  • from 是保留关键字,需要转义。正如@Lawrence Cherone 在另一条评论中指出的那样,INSERT into ... SET 实际上在 MySQL 中有效
  • @MartinSmith Yours 是唯一正确的答案;p

标签: php mysql sql


【解决方案1】:

你应该试试

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

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

【讨论】:

    【解决方案2】:

    这是正确的INSERT 语法:

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

    请注意:您的代码以这种方式存在漏洞,SQL Injection 使用 PDO 或prepared statments 代替。有关详细信息,请参阅以下帖子:

    【讨论】:

      【解决方案3】:

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

      应该是

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

      请开始使用mysqliPDO 而不是Mysql。它已被弃用。

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

      【讨论】:

      【解决方案4】:

      你做错了什么:

      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')
      

      【讨论】:

        猜你喜欢
        • 2013-02-08
        • 2014-02-16
        • 2018-01-22
        • 1970-01-01
        • 1970-01-01
        • 2021-04-02
        • 2012-09-20
        • 1970-01-01
        • 2021-01-05
        相关资源
        最近更新 更多