我有一个值数组,我内爆给我一个逗号分隔的列表,用于mysql的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);
答案 0 :(得分:0)
一些快速建议:
$arr = array('var', 3, 'var2', '5');
$inStr = "('".implode("', '", $arr)."')";
给出:
('var', '3', 'var2', '5')
最后:
SELECT count(id) FROM products WHERE id in $inStr;