当使用mysqlwhere in语句时,将文本值包装在字符串中


wrap text values in string when using a mysql where in statement

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