Подготовленные заявления PHP, как перенести данные из одного столбца в другой - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь переместить данные из одного столбца в моей таблице в другой, а затем установить нулевой исходный столбец. Хотя исходный столбец сбрасывается обратно в ноль, он также добавляет этот ноль в конец целевого столбца (я предоставлю несколько снимков экрана для контекста).

Вот мой код:

function complete_da($da_id) {
        include 'connect.php';
        include 'globals.php';

        retrieve_user_data($_SESSION['logged_in']);
        nation_data_grab($_SESSION['logged_in']);
        echo "u_n_i: ".$user_nation_information['active_da']." <br>";

        $ret_da_info_sql = "SELECT `active_da`, `completed_da` FROM `nations` WHERE `nations`.`user_id` = ?;";
        $ret_da_info_stmt = mysqli_stmt_init($connect);
        if(!mysqli_stmt_prepare($ret_da_info_stmt, $ret_da_info_sql)) {
            echo "Statement 1 Failed";
        } else {
            mysqli_stmt_bind_param($ret_da_info_stmt, "i", $user_data['id']);
            mysqli_stmt_execute($ret_da_info_stmt);

            // Use get_result for *, bind_result for specific columns

            mysqli_stmt_bind_result($ret_da_info_stmt, $active_da, $completed_da); 
            mysqli_stmt_fetch($ret_da_info_stmt);
            echo "u_n_i: ".$user_nation_information['active_da']." <br>";
            $updated_cda_str = ($completed_da .= ",".$active_da);
        }
        mysqli_stmt_close($ret_da_info_stmt);

        $update_compl_with_active_sql = "UPDATE `nations` SET `completed_da` = ? WHERE `nations`.`user_id` = ?;";
        $update_compl_with_active_stmt = mysqli_stmt_init($connect);
        if(!mysqli_stmt_prepare($update_compl_with_active_stmt, $update_compl_with_active_sql)) {
            echo "Statement 2 Failed";
        } else {
            mysqli_stmt_bind_param($update_compl_with_active_stmt, "si", $updated_cda_str, $user_data['id']);
            mysqli_stmt_execute($update_compl_with_active_stmt);

            $set_active_zero_sql = "UPDATE `nations` SET `active_da` = ? WHERE `nations`.`user_id` = ?;";
            $set_active_zero_stmt = mysqli_stmt_init($connect);

            $zero = 0;

            if(!mysqli_stmt_prepare($set_active_zero_stmt, $set_active_zero_sql)) {
                echo "Statement 2 Failed";
            } else {
                mysqli_stmt_bind_param($set_active_zero_stmt, "ii", $zero, $user_data['id']);
                mysqli_stmt_execute($set_active_zero_stmt);
            }
            mysqli_stmt_close($set_active_zero_stmt);
        }
        mysqli_stmt_close($update_compl_with_active_stmt);


        mysqli_close($connect);
    }

Вот моя таблица перед запуском функции: До

Таблица после запуска функции: * После 1011 *

При запуске отклик отладки, который я использовал для проверки правильности установки 'active_da', дает такой результат (4 - это идентификатор кнопки, на данный момент они являются только триггерами для функции): Результаты эха

У меня вопрос: как я могу просто перенести столбец 'active_da' в конец столбца 'complete_da', не добавляя этот дополнительный ноль?

РЕДАКТИРОВАТЬ: я считаю, что это запрос, который отбрасывает его

$set_active_zero_sql = "UPDATE `nations` SET `active_da` = ? WHERE `nations`.`user_id` = ?;";
            $set_active_zero_stmt = mysqli_stmt_init($connect);

            $zero = 0;

            if(!mysqli_stmt_prepare($set_active_zero_stmt, $set_active_zero_sql)) {
                echo "Statement 2 Failed";
            } else {
                mysqli_stmt_bind_param($set_active_zero_stmt, "ii", $zero, $user_data['id']);
                mysqli_stmt_execute($set_active_zero_stmt);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...