码:
$friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142");
$friendsArray2 = join(', ',$friendsArray);
$query120 = "SELECT picturemedium FROM users WHERE username IN ('$friendsArray2')";
echo $query120;
Run Code Online (Sandbox Code Playgroud)
这是输出:
SELECT picturemedium FROM users WHERE username IN ('zac1987, peter, micellelimmeizheng1152013142')
Run Code Online (Sandbox Code Playgroud)
它失败了,因为用户名没有被"zac1987","peter","mice ......"等单引号包裹.如何用单引号包装每个用户名?
Mat*_*chu 12
让我们逐个遍历每个名称,逐个转义.
我将建议您使用实际的MySQL转义函数而不是仅仅包装引号,以确保数据实际上正确地进入查询.(否则,如果我进入了一个名字一样It's me!
,单引号会弄乱查询.)我要在这里假设你正在使用PDO(你应该!),但是,如果没有,请更换引用PDO::quote
用mysql_real_escape_string
.
foreach($friendsArray as $key => $friend) {
$friendsArray[$key] = PDO::quote($friend);
}
$friendsArray2 = join(', ', $friendsArray);
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您不想使用PDO或其他复杂的解决方案,请使用implode功能,您就完成了所有设置.
$friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142");
$friendsArray2 = "'" .implode("','", $friendsArray ) . "'";
$query120 = "SELECT picturemedium FROM users WHERE username IN ( $friendsArray2 )";
echo $query120;
Run Code Online (Sandbox Code Playgroud)
解决方案:我只是崩盘您$friendArray
通过 ','
就是这样.干净利落!它正在发挥作用.
输出:
SELECT picturemedium FROM users WHERE username IN ('zac1987','peter','micellelimmeizheng1152013142')
如果你只有数字,一切都很容易.但是如果你有字符串,你需要检查引号并小心..如果你不想使用PDO或"mysql_real_escape_string",下面的代码就可以了.我测试过,效果很好.
$friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142");
$friendsArray2 = '"' . implode('","', $friendsArray) . '"';
$query120 = "SELECT picturemedium FROM users WHERE username IN ($friendsArray2)";
echo $query120;
Run Code Online (Sandbox Code Playgroud)
在谷歌上发现了这个问题,并通过这样做找到了解决方案.不确定这个解决方案是多么"合适",但它对我有用.
$friendsArray = array("zac1987", "peter", "micellelimmeizheng1152013142");
$friendsArray2 = "'" . join(', ',$friendsArray) . "'";
$query120 = "SELECT picturemedium FROM users WHERE username IN ($friendsArray2)";
echo $query120;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65300 次 |
最近记录: |