2014-06-20 158 views
0

我正在嘗試將一系列「正確」路徑作爲字符串傳遞給mySQL數據庫列。mySQL中的目錄路徑

由於多個實例可能同時被更新,我選擇使用MySQL的CASE語法,儘管我不太熟悉它。

結果將「0」傳遞給數據庫,而不是字符串。

我見過很多使用整數作爲例子的例子,但我需要使用字符串。我認爲這給了我我的悲傷。

SO社區能看一看,看看問題出在哪裏嗎?

這裏是從上面的調試行的呼應SQL:

UPDATE linksUpdates 

SET newTarget = CASE 

    WHEN hitMissed = '/dir/dir/misLink1'   THEN newTarget = 'dir/home' 
    WHEN hitMissed = '/dir/dir/misLink2'   THEN newTarget = 'photos' 
    WHEN hitMissed = '/dir/dir/anotherBadLink' THEN newTarget = 'dir/home' 
    END 
WHERE misdirect IN (
    '/dir/dir/misLink1', 
    '/dir/dir/misLink2', 
    '/dir/dir/anotherBadLink' 
     ) 
+1

引用字符串? – Fabricator

+0

你很容易受到[SQL注入攻擊](http://bobby-tables.com)的影響。一旦你瞭解了這些,你會希望知道爲什麼你的查詢是錯誤的。 –

+0

如果沒有文本字段,我是否容易受到SQL注入攻擊? – Parapluie

回答

1

THENCASE聲明中不需要(或希望)列名。在打開CASE之前,您已經指定了它。

UPDATE linksUpdates 

SET newTarget = (CASE 

    WHEN hitMissed = '/dir/dir/misLink1'   THEN 'dir/home' 
    WHEN hitMissed = '/dir/dir/misLink2'   THEN 'photos' 
    WHEN hitMissed = '/dir/dir/anotherBadLink' THEN 'dir/home' 
    END) 
WHERE misdirect IN (
    '/dir/dir/misLink1', 
    '/dir/dir/misLink2', 
    '/dir/dir/anotherBadLink' 
     ) 
+0

謝謝你回覆,ydaetsk。但括號不起作用。 SQL返回一個錯誤。思考? – Parapluie

+0

錯誤是什麼? – ydaetskcoR

+0

php「死」錯誤。 – Parapluie