PDO INSERT INTO с SELECT не добавляет записи в базу данных phpmyadmin

266
06 июня 2021, 18:40

Строка "INSERT INTO admin_history (user_id, username, usernick, userlevel, delete_user_id) SELECT user_id, username, usernick, userlevel, delete_user_id FROM user WHERE (user_id = :user_id)" не записыват данные в бд.

Если же вместо :user_id подставить существующий id, то запись работает.

Код я сам не писал, взял тут http://demo.webslesson.info/multiple-checkbox-update-data/ и пытаюсь добавить возможность просмотра истории изменений на сайте http://yamer7.beget.tech/panel-admin.

include($_SERVER['DOCUMENT_ROOT'].'/sql_connect.php');
if(isset($_POST['user_id']))
{
    $new_id = $_POST['new_id'];
    $user_id = $_POST['user_id'];
    $username = $_POST['username'];
    $usernick = $_POST['usernick'];
    $userlevel = $_POST['userlevel'];
    $delete_user_id = $_POST['delete_user_id'];
    for($count = 0; $count < count($user_id); $count++)
    {
        $data = array(
            ':new_id'   => $new_id[$count],
            ':user_id'   => $user_id[$count],
            ':username'  =>  $username[$count],
            ':usernick'  =>  $usernick[$count],
            ':userlevel'  =>  $userlevel[$count],
            ':delete_user_id'  =>  $delete_user_id[$count]
    );
    $query0 = "INSERT INTO admin_history (user_id, username, usernick, userlevel, delete_user_id) SELECT user_id, username, usernick, userlevel, delete_user_id FROM user WHERE (user_id = :user_id)";
    $statement0 = $connect->prepare($query0);
    $statement0->execute($data);
    $query1 = "UPDATE user SET user_id = :new_id, username = :username, usernick =:usernick, userlevel = :userlevel, delete_user_id = :delete_user_id WHERE (user_id = :user_id)";
    $statement1 = $connect->prepare($query1);
    $statement1->execute($data);
    $query2 = "DELETE FROM user WHERE delete_user_id=1";
    $statement2 = $connect->prepare($query2);
    $statement2->execute($data);
    }
}

Напишите пожалуйста как лучше сделать, если я хочу сохранить множественную выборку при выполнении INSERT INTO, чтобы в бд записывались все изменённые записи, выбранные в checkbox.

Answer 1

Может то что вы передаете в execute 6 аргументов а в prepare их 5

READ ALSO
Динамический список в формах бизнес-процессов Битрикс

Динамический список в формах бизнес-процессов Битрикс

Мне нужно решить достаточно тривиальную задачу, но штатными методами бизнеc-процессов Битрикс сделать это не получилось, а тк

199
В чем различие между return {veiwName} и return redirect:/

В чем различие между return {veiwName} и return redirect:/

Spring Boot MVC, Controller, RequestMapping указывает на файл index как /Метод

123
Проблема с типами данных

Проблема с типами данных

Смысл такой: записываю пути файлов в массив, есть переменная которая считает шаг, нужно чтобы картинка jLabel менялась при каждом шагеподскажите...

85
Angular с Spring Boot, node_modules appers empty

Angular с Spring Boot, node_modules appers empty

Делаю в точности по https://wwwbaeldung

182