【问题标题】:MYSQL Error:1054 - Unknown ColumnMYSQL 错误:1054 - 未知列
【发布时间】:2012-03-08 09:13:48
【问题描述】:

只是在 PHP 中进行 SQL 更新时遇到了一些问题。下面列出的是函数的摘录:

    $captain = $this->getUserName();
    $member = $textParts[1];
    $memberNo = 'member1';

    $sqlUpdate = 'UPDATE ajax_chat_draft_teams SET '.$memberNo.'='.$member.' WHERE captain='.$captain.'';

    $result = $this->db->sqlQuery($sqlUpdate); 

当到达查询时,它会抛出以下错误:

Query: UPDATE ajax_chat_draft_teams SET member1=user WHERE captain=Oolius
Error-Report: Unknown column 'Oolius' in 'where clause'
Error-Code: 1054 error occured!

ajax_chat_draft_teams 表有 5 个字段:船长、成员 1、成员 2、成员 3、成员 4 (注:表中有一条记录,船长为Oolius,所有成员均为NULL)。

我看不到我的 SQL 语句有什么问题。感谢您的宝贵时间。

【问题讨论】:

  • 在 Oolius 周围引用引号,这让我很困扰。

标签: mysql


【解决方案1】:

试试这个:

$sqlUpdate = 'UPDATE ajax_chat_draft_teams SET '.$memberNo.' = "'.$member.'" WHERE captain = "'.$captain.'"';

【讨论】:

  • 感谢堆的魅力。这让我很矛盾。
【解决方案2】:

字符串文字需要用单引号括起来。查询应如下所示:

UPDATE ajax_chat_draft_teams SET member1='user' WHERE captain = 'Oolius'

另外,考虑使用PDO 并绑定变量。

【讨论】:

  • +1 绑定,这样的 SQL 乞求注入攻击
【解决方案3】:

您需要将 Oolius 放在引号中,其他 MySQL 认为它是列名。

【讨论】:

    【解决方案4】:

    使用这个

    $sqlUpdate = '更新 ajax_chat_draft_teams 设置 '.$memberNo.'="'.$member.'" WHERE Captain="'.$captain.'"';

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2016-04-01
      • 2012-03-09
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2021-05-27
      • 2017-03-17
      • 2013-10-13
      • 1970-01-01
      相关资源
      最近更新 更多