Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 勾选复选框时数据库未更新_Php_Database_Checkbox_Mysqli_Insert Update - Fatal编程技术网

Php 勾选复选框时数据库未更新

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=

编辑:抱歉,已取消在数据库中键入tinyint 我有一个带有1个复选框的表单-我希望它在被选中时更新我的数据库,以显示课程被取消。默认情况下,数据库中的值为0,但当我尝试更新课程以取消课程时,该值从不更改为1。请帮忙

这是我的editForm代码片段:

  <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);      
}