PHP значения флажка до MYSQL бесконечность l oop проблема - PullRequest
0 голосов
/ 03 августа 2020

Я хочу сделать настройки профиля на моем веб-сайте с помощью флажков. Флажки тоже работают, но я продолжаю получать эту ошибку: Fatal error : Uncaught mysqli_sql_exception: Column 'match_role_id' cannot be null

Вероятно, потому что таблица, в которую должны быть введены значения, является временной таблицей с двумя идентификаторами из двух других таблиц. Если я установил значение по умолчанию для двух значений NULL , у меня будет бесконечность l oop.

Table structure

How can I fix this?

Function:

function add_team_match_role() {

    global $connection;

    if(isset($_POST['add_match_roles'])) {

        $match_role_checkbox = $_POST['match_role_check'];
        $team_id = escape($_POST['team_id']);

        for($i = 0; $i < $match_role_checkbox; $i++) {

            $team_id = escape($_POST['team_id']);

            $stmt = $connection->prepare("INSERT INTO game_role_team (match_role_id, team_id) VALUES (?, ?)");
            $stmt->bind_param("ss", $match_role_checkbox[$i], $team_id);
            $stmt->execute();
            $stmt->close();

        }
    }
}

HTML:

 Match Rollen  подготовить ("ВЫБРАТЬ * ИЗ игровой_роли"); $ stmt-> выполнить (); $ результат = $ stmt-> get_result (); while ($ row = $ result-> fetch_asso c ()) {$ match_role_id = $ row ['match_role_id']; $ match_role_name = $ row ['match_role_name']; эхо " $ match_role_name ";} $ stmt-> close ();?>  

1 Ответ

1 голос
/ 03 августа 2020

Если флажок не установлен, то $_POST['add_match_roles'][$i] равно NULL. Но вам не разрешено вставлять NULL или пустую строку, потому что поле является целым числом.

Проверьте, проверена ли роль, проверив «установить, а не пусто» (поскольку значение равно «on»). Если поле пусто, укажите ноль или единицу при проверке.

$isChecked = (int) !empty($_POST['add_match_roles'][$i]);

Также исправьте тип со строки на целое число

$stmt->bind_param("is", $isChecked, $team_id);

Примечание : Используйте TinyInt (1) UNSIGNED, если вам просто нужно логическое значение (true = 1, false = 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...