我正在使用一個應用程序,它需要對數據庫執行where查詢以返回具有「t1.address_city」(數據庫中的一列)的行等於數組中的任何位置。我知道我應該使用implode()將它變成一個大字符串,但這不會返回任何行 - 大概是因爲它正在尋找與大字符串匹配的行(當然這不僅僅是一個城市,它是一個列表)。代碼:使用帶有長字符串的MySQL「in」子句
$_GET["places"]
包含這樣的事情:
["madrid", "lisbon", "london", "paris", "new york"]
當數組名,$地方,放入WHERE子句像IN ('$places')
,我沒有得到任何行。按照這裏的其他類似問題的建議,我將陣列擊碎,使其看起來像"madrid, lisbon, london, paris, new york"
,然後使用像IN ('$implodedplaces')
這樣的內部變量,但如前所述,它找不到任何行。
我發現輸入每個地名的引號(IN ('madrid','lisbon','london')
)單獨工作完美,但當然我需要IN子句使用$_GET["places"]
,因爲這是由用戶操縱的。有沒有辦法在$_GET["places"]
中輸入所有的值作爲逗號分隔的字符串?
任何幫助表示讚賞 - 如果我的解釋不是很好,請隨時提問。
聽起來像所有你想做的事情是把所有嵌入的單引號字符加倍,用雙引號代替單引號,並丟棄方括號? –
Mysql也接受IN(「madrid」,「lisbon」,「london」),所以你只需要刪除那些方括號。 –
它不只是方括號......它是一個數組。 –