在语句中使用mysql时,在string中包装文本值

时间:2014-09-19 14:41:33

标签: php mysql implode data-manipulation

我有一个值数组,我内爆给我一个逗号分隔的列表,用于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);

1 个答案:

答案 0 :(得分:0)

一些快速建议:

$arr = array('var', 3, 'var2', '5');

$inStr = "('".implode("', '", $arr)."')";

给出:

('var', '3', 'var2', '5')

最后:

SELECT count(id) FROM products WHERE id in $inStr;