现在数组是:$arr = array(1,2,3,4,5....)
,我可以用…WHERE meta_id IN(1,2,3,4,5....)获取mysql数据,
但是如何将数字替换为$arr?
您可以使用JOIN
$array = array('1', '2', '3');
$arr_ID = join(',', $array);
$sql = "SELECT * FROM tableName WHERE id IN ($arr_ID)";
- PHP JOIN (别名)
快速回答:
$arr = array(1,2,3,4,5);
$string = implode(',', $arr);
$sql = sprintf('SELECT `foo` FROM `table` WHERE `meta_id` IN (%s)', $string);
较长的答案:
您应该考虑在查询中使用参数,以避免SQL注入。在您的示例中,您确实有一个"硬编码"数组,但如果有用户输入要在IN
子句中使用…那么,您最好的选择是使用参数(如在php.net中所见):
$arr = array(1, 2, 3, 4, 5);
$questionMarkArray = array();
foreach($arr as $item) {
$questionMarkArray[] = '?';
}
$string = implode(',', $questionMarkArray);
$sql = sprintf('SELECT `foo` FROM `table` WHERE `meta_id` IN (%s)', $string);
$statement = $dbh->prepare($sql);
$statement->execute($arr);
$results = $statement->fetchAll();
这样,您将摆脱SQL注入和诸如此类的可能性。
另外,由于我已经一两年没有真正编写php了,可能有更好的方法来创建问号(然而,在我看来,手动添加到字符串后更难看)。