我想使用复选框对我的网站上的个人资料进行设置。这些复选框也有效,但我不断收到此错误:Fatal error : Uncaught mysqli_sql_exception: Column 'match_role_id' cannot be null 这可能是因为应在其中输入值的表是一个临时表,其中包含来自其他两个表的两个 ID。如果我将这两个值的默认值设置为NULL,则会出现无限循环。我怎样才能解决这个问题?功能: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:<div class="form-group"> <label for="match_role">Match Rollen</label> <?php $stmt = $connection->prepare("SELECT * FROM game_role"); $stmt->execute(); $result = $stmt->get_result(); while($row = $result->fetch_assoc()) { $match_role_id = $row['match_role_id']; $match_role_name = $row['match_role_name']; echo "<div class='form-check'> <input class='form-check-input' type='checkbox' name='match_role_check[]' value='$match_role_id'> <label class='form-check-label'>$match_role_name</label> </div>"; } $stmt->close(); ?></div>
1 回答
白板的微信
TA贡献1883条经验 获得超3个赞
当未设置复选框时,则为$_POST['add_match_roles'][$i]
NULL。但不允许插入 NULL 或空字符串,因为该字段是整数。
通过验证“set and notempty”来检查角色是否被检查(因为该值为“on”)。如果为空,则在检查时给出零或一。
$isChecked = (int) !empty($_POST['add_match_roles'][$i]);
还将类型从字符串更正为整数
$stmt->bind_param("is", $isChecked, $team_id);
注意:
如果您只需要一个布尔值(true=1,false=0),请使用 TinyInt(1) UNSIGNED。
- 1 回答
- 0 关注
- 69 浏览
添加回答
举报
0/150
提交
取消