【问题标题】:Integrity constraint violation: 1052 Column 'company_name' in where clause is ambiguous违反完整性约束:1052 列“company_name”在 where 子句中不明确
【发布时间】:2021-09-13 13:43:31
【问题描述】:

我试图在我的语句中使用 AND,但每次运行代码时都会出现此错误:

PHP 致命错误:未捕获的 PDOException:SQLSTATE[23000]:违反完整性约束:1052 where 子句中的列 'company_name' 不明确

select tblcomplaints.*,user.name as name,category.categoryName as
    catname from tblcomplaints join user on user.id=tblcomplaints.userId join category on 
    category.id=tblcomplaints.category where tblcomplaints.complaintNumber=".$cid." AND company_name=$companyname`

【问题讨论】:

  • 编辑您的帖子以添加您的表格结构,以便更好地了解您的错误

标签: php mysql sql ambiguous


【解决方案1】:

根据错误,查询中的两个或多个表具有company_name 列。您可以通过使用表名完全限定列来修复错误。例如,如果它在 user 表中:

select tblcomplaints.*, user.name as name, category.categoryName as catname
from   tblcomplaints 
join   user on user.id = tblcomplaints.userId
join   category on category.id = tblcomplaints.category
where  tblcomplaints.complaintNumber = ".$cid." AND 
       user.company_name = $companyname
-- Here^

旁注:
像这样将字符串连接到 SQL 语句中可能会使您的应用程序容易受到 SQL 注入攻击。我强烈建议您将prepared statements 视为一种更安全的方法。

【讨论】:

  • 是的,表内容和用户都有列 company_name 我现在收到另一个错误 PHP 致命错误:未捕获的 PDOException:SQLSTATE[42S22]:未找到列:1054 未知列
  • 该错误继续说 WHICH COLUMN 未知!那么它是哪一列
  • 愚蠢的我,我没有在用户表中声明该列..非常感谢您抽出宝贵的时间
猜你喜欢
  • 2019-10-03
  • 2022-11-24
  • 2013-10-16
  • 2021-10-11
  • 1970-01-01
  • 2020-10-13
  • 2019-04-14
  • 1970-01-01
  • 2020-11-23
相关资源
最近更新 更多