#php #mysql
#php #mysql
Вопрос:
Я пытаюсь получить название категорий из каждого значения массива из базы данных, а затем добавить название категорий в массив $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'];
}
}
Ответ №1:
сделайте это следующим образом:
$dbc = mysqli_query($mysqli,"SELECT category
FROM categories
WHERE id IN (" .implode(",", $array). ")");
Комментарии:
1. что, если мой массив выглядит следующим образом
Array ( [0] => 1 [1] => 34 )
2. какой тип идентификатора означает interger, alphanum и т.д. Если он числовой, то этот массив не может быть применен … и массив должен быть одномерным, иначе вам придется использовать запрос SELECT более одного…
3. хорошо… если вам нужно: $ array2=new array(); foreach($array как $k=>$ v){ $array2[] = $v; } $ dbc = mysqli_query($mysqli,»ВЫБЕРИТЕ категорию ИЗ категорий, где идентификатор В (» .implode(«,», $array2). «)»);
Ответ №2:
$dbc = mysqli_query($mysqli,"SELECT category
FROM categories
WHERE id IN (" . implode(",", $array) . ")");
Однако при выполнении этого убедитесь, что ваш массив действительно содержит только целые числа, иначе у вас будет неприятная дыра в SQL-инъекции. Если ваш массив может содержать что-то еще, выполните цикл по нему, экранируя все значения и заключая их в кавычки, прежде чем делать это.
Комментарии:
1. что, если мой массив выглядит следующим образом
Array ( [0] => 1 [1] => 34 )
2. @оставлено: … это массив целых чисел. Просто убедитесь, что это всегда так.
Ответ №3:
Код выглядит хорошо. Прав ли я, предполагая, что вы каждый раз получаете сообщение об ошибке? Я не думаю, что ваш синтаксис SQL правильный. Я использую ‘WHERE id IN(‘.implode($array,’,’).’)’. Не уверен, что это ваш вопрос…
РЕДАКТИРОВАТЬ: У меня есть небольшое подозрение, что вы также могли бы отказаться от своего цикла и вместо этого просто выполнить вторую выборку для столбца ‘categories’.
Комментарии:
1. что, если мой массив выглядит следующим образом
Array ( [0] => 1 [1] => 34 )
2. Я думаю, вы могли бы использовать implode(array_values($array),’,’).