我有一个值数组,我将其内爆,以提供一个逗号分隔的列表,用于mysql where in子句。
SELECT count(id) FROM products WHERE id in (val1, val2, 3, 4, 5);
当文本值未用引号括起来时,此语句将中断。
因此,从理论上讲,我需要首先循环遍历列表,并在传递到mysql语句之前包装所有文本值。有什么想法吗?
代码示例:
$skus = array();
foreach($csv_array as $row)
{
$skus[] = $row['skunumber'];
}
$skulist = implode(",",$skus);
我用:修复了它
foreach ($csv_array as $row)
{
if (is_numeric($row['skunumber']))
{
$skus[] = $row['skunumber'];
}
else
{
$skus[] = '"'.$row['skunumber'].'"';
}
}
$skulist = implode(",",$skus);
一些快速建议:
$arr = array('var', 3, 'var2', '5');
$inStr = "('".implode("', '", $arr)."')";
给出:
('var', '3', 'var2', '5')
最后:
SELECT count(id) FROM products WHERE id in $inStr;