我正在使用一个应用程序,它需要对数据库执行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”),所以你只需要删除那些方括号。 –
它不只是方括号......它是一个数组。 –