Не могу изменить несколько записей из БД

136
20 января 2021, 01:50

Есть таблица Фильмов,Актеров и таблица соединяющая ид фильма и ид актера. Есть разметка.

echo '<div class="actors-wrap">'; foreach ($adminActors as $actor) { echo '<div class="genre-name">'; echo '<input class="option-input checkbox" type="checkbox" name="actor[]" value="'.$actor['id_actors'].'">'; echo '<span class="text"> '.$actor['firstName'].'</span>.'; echo '</div>'; } echo '</div>';

получаю активные чекбоксы

$actors = $_POST['actor'];

получаю ид актеров кто снимался в фильме (который надо будет изменит потом)

$sqlActors = "SELECT * FROM film_actors WHERE  film_actors.`id_film`=" . $id;

Собственно запрос где я изменяю на нужных мне актеров

                foreach ($actors as $actor) {
                $sglA="UPDATE `film_actors` SET `id_actor` = $actor WHERE `id_film` =". $id;
                $item = $dataBase->executeRun($sglA);
            }

Но проблема в том что, если актеров несколько например два, и изменить надо двое актеров то , эти два поля актеров хранят в себе два одинаковых актера. последний просто дублируется 2 раза один последний актер.

Надеюсь понятно разложил )

Answer 1

Вы же своим запросом обновляете все записи в бд в которых id_film = $id

Не по одной записи, а все. Соответственно последнее значение из массива $actors и будет значением для всех записей. Вам скорее тут скорее нужно либо менять конкретных актеров на других, То-есть:

$sglA="UPDATE `film_actors` SET `id_actor` = $actor 
     WHERE `id_actor` = $oldActorId 
     AND `id_film` =". $id;

а лучше либо удалять записи и новые создавать.

READ ALSO
Почему заказ придет без товара?

Почему заказ придет без товара?

всем доброго времени суток

142
Ошибка отправки уведомления Bitmessage

Ошибка отправки уведомления Bitmessage

помогите пожалуйста с решением вопроса

133
Ограничить число итераций foreach

Ограничить число итераций foreach

Подскажите, как ограничить количество строк таблицы, выводимых циклом foreach из БД sqlite на страницу? Нужно выводить не более 500 строка в БД их 10 тысяч

139