цикл не выполняется

0

HI У меня есть цикл for, который проходит через ids. По одной из других причин цикл for не выполняется.

$med_uuids = $_POST['med_uuids'];

$med_uuids_length = count($med_uuids);

for($x=0; $x < $med_uuids_length; $x++){
    $query = mysqli_query($connection, "DELETE FROM medicine WHERE uuid = 
    '$med_uuids[$x]'");
}

//close connection to db
mysqli_close($connection);

Любая помощь будет оценена по достоинству.

  • 0
    какие данные вы получите в переменной $ med_uuids?
  • 0
    If $_POST['med_uuids']; на самом деле это массив, попробуйте использовать foreach() ; тогда вам не нужно беспокоиться о пропавших ключах. Если это не массив, то вам нужно сделать его одним
Показать ещё 7 комментариев
Теги:
mysqli

2 ответа

2
Лучший ответ

У вас нет массива, а просто строка.

$ids = explode(',', $_POST['med_uuids']); // make an array

foreach ($ids as $id) {
    mysqli_query($connection, "DELETE FROM medicine WHERE uuid = '" . mysqli_real_escape_string($connection, $id) . "'");
}
  • 0
    Вы также можете использовать med_uuids[] именования параметра med_uuids[] (в квадратных скобках). Таким образом, $_POST['med_uuids[]'] будет массивом, вам не нужно делать explode .
  • 0
    @ClaudioVenturini: у него был, вероятно, только один вход, и он помещал туда идентификаторы, разделенные запятой. Ваше решение требует больше входных данных (например, динамически добавляется). Это лучшее решение, но мы не знаем, насколько ОП может управлять своим HTML.
Показать ещё 2 комментария
0

Если вы получите список с разделителями-запятыми (124,121,45,12,35), то вы можете сделать что-то вроде этого

DELETE FROM medicine WHERE uuid IN (124,121,45,12,35)

Это поможет вам выполнить задачу за один раз, и ваша БД не будет забита несколькими запросами.

Ещё вопросы

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