2017-08-22 46 views
0

我有一個頁面,更新特定用戶的數據。用戶有位置,這是一個外鍵。查詢更新(下面)沒有位置工作正常,但與位置我得到以下錯誤。PHP:在更新語句錯誤與子查詢

查詢:

錯誤查詢:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法近 使用「SELECT positionid FROM visitorsystem.position WHERE positionName LIKE‘%INFORMAT’在行3

我試圖適合我的方式手動 通過使用內部連接,因爲我已經看到了一些在這裏給出的解決方案,但沒有任何工作。有什麼建議麼 ?

+0

你的子查詢不應該引號之間,但括號之間 –

+1

** WARNING **:當使用'mysqli'你應該使用[參數化查詢(http://php.net/manual/en/mysqli。 quickstart.prepared-statements.php)和['bind_param'(http://php.net/manual/en/mysqli-stmt.bind-param.php)來添加用戶數據查詢。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **不要**將'$ _POST','$ _GET'或**任何**用戶數據直接放入查詢中,如果有人試圖利用您的錯誤,這可能會非常有害。 – tadman

+0

注:面向對象的接口,以'mysqli'是顯著更簡潔,使代碼更容易閱讀和審覈,並且不容易過時的'mysql_query'接口混淆。在你過於投入程序風格之前,它是值得轉換的。例如:'$ db = new mysqli(...)'和'$ db-> prepare(「...」)過程接口是PHP4時代的一個神器,當引入mysqli API時,不應該在新的代碼 – tadman

回答

1

子查詢的潛規則括號,沒有引號內,所以在一般意義上:

SELECT x FROM y WHERE z IN (SELECT z FROM a) 

單引號和雙引號(默認)是字符串值。

+0

我在括號中曾嘗試以及可惜仍然無法工作 – Chanter

+1

「不會工作」是不是一個有用的診斷。你可能有其他問題,請檢查您的錯誤日誌的詳細信息。獲取* *的東西,我們可以用它來幫助你。 – tadman

+0

我試圖把括號多次全子查詢和解析錯誤給予我關閉我的瀏覽器,並再次申請的變化,不知它做了一個差異,工作這段時間,非常令人迷惑..感謝幫助:)!我也會注意安全問題,謝謝指出 – Chanter