2015-09-11 43 views
0

進入一個錯誤,我似乎無法找到答案從谷歌搜索即時通訊。MYSQL加入CONCAT

即時嘗試執行的操作是連接3個表格,並且僅當計算機位於第1個和第3個表格中時才顯示結果。我還需要加入第二張包含大部分信息的表格。我遇到的問題是我的第三個左連接沒有連接。 SelOrder & SelUnit來自頁面url中的一些變量。

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管理員'。在行

+0

什麼是$ SelOrder,你有一個表名稱嗎?一個可能的解決方法是對$'SelOrder'使用反引號 – Mihai

回答

1

錯誤消息,以將您的問題,清楚地表明你的$Selorder變量

MS15-093 

您正在嘗試使用該值作爲列名的值。但是,MySQL將連字符視爲減號,然後無法理解結果。要使用這種名稱的列,您必須在反引號中將其轉義。所以,試試這個:

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

爲了進一步提高安全性,限制你的列名,以字母數字和下劃線字符。