Проблема с массивами PHP и MySQL

0

Я пытаюсь получить имя категории из каждого значения массива из базы данных, а затем добавить имя категории в массив $cat_name, как я могу это сделать с помощью 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'];
    }
}
Теги:

3 ответа

0

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

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

  • 0
    Что делать, если мой массив выглядит как этот Array ( [0] => 1 [1] => 34 )
  • 0
    Я думаю, вы могли бы пойти взорваться (array_values ($ array), ',').
0
$dbc = mysqli_query($mysqli,"SELECT category 
    FROM categories
    WHERE id IN (" . implode(",", $array) . ")");

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

  • 0
    Что делать, если мой массив выглядит как этот Array ( [0] => 1 [1] => 34 )
  • 0
    @leftout: ... это массив целых чисел. Просто убедитесь, что это всегда так.
0

сделайте это так:

$dbc = mysqli_query($mysqli,"SELECT category 
                 FROM categories 
                 WHERE id IN (" .implode(",", $array). ")"); 
  • 0
    Что делать, если мой массив выглядит как этот Array ( [0] => 1 [1] => 34 )
  • 0
    какой тип идентификатора означает interger, alphanum и т. д., если он числовой, то этот массив не может быть применен ... и массив должен быть одного измерения, иначе вам придется использовать запрос SELECT более чем на один ...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню