Php 勾选复选框时数据库未更新
编辑:抱歉,已取消在数据库中键入tinyint 我有一个带有1个复选框的表单-我希望它在被选中时更新我的数据库,以显示课程被取消。默认情况下,数据库中的值为0,但当我尝试更新课程以取消课程时,该值从不更改为1。请帮忙 这是我的editForm代码片段:Php 勾选复选框时数据库未更新,php,database,checkbox,mysqli,insert-update,Php,Database,Checkbox,Mysqli,Insert Update,编辑:抱歉,已取消在数据库中键入tinyint 我有一个带有1个复选框的表单-我希望它在被选中时更新我的数据库,以显示课程被取消。默认情况下,数据库中的值为0,但当我尝试更新课程以取消课程时,该值从不更改为1。请帮忙 这是我的editForm代码片段: <p><label class="field" for "Credits">Credits:</label> <input type="text" name=
<p><label class="field" for "Credits">Credits:</label> <input type="text" name="cred" size="40" value="<?php echo "$row[Credits]"?>" class="rep"></p>
<p><label class="field" for "Cancelled">Cancelled:</label> (Tick to cancel) <input type="checkbox" name="canc" size="40" value="Yes" class="rep"></p>
<input type="submit" name="submit_value" value="Update"></p>
我的查询2正在工作,但查询1从未更改我的数据库中已取消的值您的查询中此行字段之间缺少一些逗号:
Facilitator = '$fac'
之后应该有一个逗号:
$query1 = "UPDATE Course
SET Title = '$title',
Category = '$cat',
Location = '$loc',
County = '$county',
Course_Time = '$time',
Course_Date = '$date',
Credits = '$cred',
Facilitator = '$fac',
Cancelled = '$canc'
WHERE CourseID = '$id' ";
这将触发MySQL错误。您可以使用mysql\u error()
调试此类问题。回显或打印查询通常也有助于发现错误
首先,简单代码行太多。您正在重复启动
$canc
。如果使用0和1对变量赋值,为什么要使用heck 2查询?1更简单,可读性更强。此外,您还可以更轻松地调试。其次,您需要阅读关于PDO语句或过滤的内容,因为您的脚本非常容易受到攻击。例如,您的脚本可以缩短为:
$canc = isset($_POST['canc']) ? '1' : '0';
if(isset($_POST['submit_value'])) {
$query = "
UPDATE Course
SET Title = '$title',
Category = '$cat',
Location = '$loc',
County = '$county',
Course_Time = '$time',
Course_Date = '$date',
Credits = '$cred',
Facilitator = '$fac',
Cancelled = '$canc'
WHERE CourseID = '$id'";
$query_result = $mysqli_db->query($query);
}
Cancelled
字段在数据库中有什么数据类型?非常感谢!它总是最微小的东西!另一个答案也是正确的,你的代码可以简化很多!
$canc = isset($_POST['canc']) ? '1' : '0';
if(isset($_POST['submit_value'])) {
$query = "
UPDATE Course
SET Title = '$title',
Category = '$cat',
Location = '$loc',
County = '$county',
Course_Time = '$time',
Course_Date = '$date',
Credits = '$cred',
Facilitator = '$fac',
Cancelled = '$canc'
WHERE CourseID = '$id'";
$query_result = $mysqli_db->query($query);
}