У меня есть массив значений, которые я взрываю, чтобы дать мне список через запятую для использования в MySQL, где в предложении.
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;
Других решений пока нет …