2017-08-22 78 views
0

我有一個查詢,我試圖更新我該如何糾正這個MySql查詢?

UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, " . $MyString . ")  

$MyString一個MySQL表將包含類似MOZILLA/5.0 (COMPATIBLE; SEMRUSHBOT/1.2~BL; +HTTP://WWW.SEMRUSH.COM/BOT.HTML一個用戶代理,但我得到一個語法錯誤?該字段設置爲TEXT NULL,默認值爲NULL

任何幫助表示讚賞。

爲了清楚起見,我正在嘗試將文本添加到數據庫中的文本字段中,文本IS與上面的useragent完全相同!

親切的問候, 西蒙在SQL

+1

什麼是錯誤信息?您嘗試更新的表的名稱是什麼? – Lennart

+0

你能否更新你的問題,因爲它不完全清楚你想要實現什麼。 – Noob

+0

好吧,我已經把TABLE放在我的問題中,實際的行會讀取uAgent,這裏是錯誤UPDATE'ST_uAgent' SET agent = CONCAT(agent,MOZILLA/5.0(COMPATIBLE; DOTBOT/1.1; HTTP://WWW.OPENSITEEXPLORER.ORG/DOTBOT,[email protected])) – Silo

回答

0

你需要把'報價'在你的字符串。

"UPDATE `" . TABLE_PREFIX . "TABLE` SET FIELD = CONCAT(FIELD, '". $MyString ."')" 

沒有這個MySQL不知道如何解釋你傳遞的數據。

也就是說,你在這裏嘗試的是非常危險的,並且讓你對SQL注入敞開大門。 How can I prevent SQL injection in PHP?

+1

這是偉大的工作,但沒有任何空格或回車,所以一切都閱讀爲一個長串。感謝您指出這一點,我會看看PDO。 – Silo

+1

我同意,只要確保使用雙引號,因爲這就是你用來連接的東西。 –

2

字符串分隔符是」,我認爲你的問題查詢是某種類型的PHP和SQL之間的混合。我建議你首先得到正確的sql,然後將它合併到php中。您的查詢可能應該是這個樣子:

UPDATE ST_uAgent 
    SET agent = CONCAT(agent, 'MOZILLA/5.0 (COMPATIBLE; DOTBOT/1.1; HTTP://WWW.OPENSITEEXPLORER.ORG/DOTBOT, [email protected])'); 
0

我想這個問題是分隔符「:在這裏看到的 -

由mysqli的提供或者代替PDO考慮使用參數化/預處理語句。 消除分隔符:

("UPDATE ". TABLE_PREFIX ." TABLE SET FIELD = CONCAT(FIELD, '". $MyString ."')"); 

這只是一個猜測。