MYSQL加入CONCAT

时间:2015-09-11 22:16:49

标签: php mysql join

我遇到了一个错误,我似乎无法通过谷歌搜索找到答案。

我想要做的是加入3个表,只在计算机位于第1和第3个表时显示结果。我还需要将第二个表与大多数信息一起加入。我遇到的问题是我的第三个左连接没有连接。 SelOrder& SelUnit来自页面网址中的一些变量。

SELECT * 
FROM admins.computers 
LEFT JOIN admins.users ON admins.computers.`lastuser` = dmins.users.`userid` 
LEFT JOIN vulnerability.$SelOrder ON admins.computers.`cName` =  
                     vulnerability.$SelOrder.`cName` 
WHERE admins.users.`Org` like '$SelUnit' 
ORDER BY admins.computers.`cName` ASC

我得到的错误是

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近' -093 ON admins.computers。cName =   漏洞.MS15-093。cName WHERE管理员。'在线

1 个答案:

答案 0 :(得分:1)

错误消息以及您的问题清楚地表明您的$Selorder变量具有值

  MS15-093

您正尝试将该值用作列名。但MySQL将连字符视为减法符号,然后无法理解结果。要使用具有该类型名称的列,必须在反引号中将其转义。所以,试试这个:

JOIN vulnerability.`$SelOrder` 
     ON admins.computers.`cName` = vulnerability.`$SelOrder`.`cName`

为了更加安全,请将列名限制为字母数字和下划线字符。