2010-08-29 4 views
0

Я пытаюсь получить имя категории из каждого значения массива из базы данных, а затем добавить имя категории в массив $cat_name, как это сделать, используя PHP & MySQL?Проблема с массивом PHP и MySQL

$array = array(1, 2, 3, 4, 5); 

$cat_name = array(); 
$dbc = mysqli_query($mysqli,"SELECT category 
       FROM categories 
       WHERE id = '" . $array . "'"); 


if (!$dbc) { 
    print mysqli_error($mysqli); 
} else { 
    while($row = mysqli_fetch_array($dbc)){ 
    $cat_name[] = $row['category']; 
    } 
} 

ответ

0

сделать это следующим образом:

$dbc = mysqli_query($mysqli,"SELECT category 
       FROM categories 
       WHERE id IN (" .implode(",", $array). ")"); 
+0

Что делать, если мой массив выглядит так: 'Array ([0] => 1 [1] => 34)' – leftout

+0

какой тип идентификатора означает interger, alphanum и т. Д. , если его числовое значение не применяется ... и массив должен быть одномерным, иначе вам нужно использовать запрос SELECT более одного ... –

+0

посмотреть на новое редактирование – leftout

0
$dbc = mysqli_query($mysqli,"SELECT category 
    FROM categories 
    WHERE id IN (" . implode(",", $array) . ")"); 

Однако при выполнении вещи убедитесь, что ваш массив на самом деле содержит только целые числа, или вы будете иметь неприятные инъекции SQL отверстия. Если ваш массив может содержать что-то еще, пропустите его, чтобы избежать всех значений и включить их в кавычки, прежде чем делать это.

+0

Что делать, если мой массив выглядит так: 'Array ([0] => 1 [1] => 34)' – leftout

+0

@leftout: ... это массив целых чисел. Просто убедитесь, что это всегда так. –

0

Код выглядит хорошо. Правильно ли я предполагаю, что вы каждый раз получаете ошибку? Я не думаю, что ваш синтаксис SQL правильный. Я использую 'WHERE id IN ('. Implode ($ array, ','). ')'. Не уверен, что это ваш вопрос ...

EDIT: У меня есть небольшое подозрение, что вы также можете покончить с вашей петлей и вместо этого просто выпустить вторую выборку для столбца «категории».

+0

Что делать, если мой массив выглядит так: 'Array ([0] => 1 [1] => 34)' – leftout

+0

Я думаю, вы могли бы перейти в implode (array_values ​​($ array), ','). – Ollie2893

Смежные вопросы