代码:
$friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142");
$friendsArray2 = join(', ',$friendsArray);
$query120 = "SELECT picturemedium FROM users WHERE username IN ('$friendsArray2')";
echo $query120;
这是输出:
SELECT picturemedium FROM users WHERE username IN ('zac1987, peter, micellelimmeizheng1152013142')
之所以失败,是因为用户名没有用单引号括起来,例如“zac1987”,“peter”,“mice ...”。每个用户名如何用单引号引起来?
最佳答案
让我们一个一个地循环浏览每个名称,将每个名称转义。
我建议您使用实际的MySQL转义函数,而不是仅使用引号引起来,以确保数据实际上正确地进入了查询。 (否则,如果我输入了像It's me!
这样的名称,则单引号会弄乱查询。)在这里,我假设您使用的是PDO(应该使用!),但是,如果没有,请替换对PDO::quote
的引用与mysql_real_escape_string
。
foreach($friendsArray as $key => $friend) {
$friendsArray[$key] = PDO::quote($friend);
}
$friendsArray2 = join(', ', $friendsArray);
关于php - mysql WHERE IN数组字符串/用户名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6617620/