Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.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
MySQL数据库项不会更新。PHP不会输入if($#发布[';编辑#提交';]))_Php_Html_Mysql_Database_Phpmyadmin - Fatal编程技术网

MySQL数据库项不会更新。PHP不会输入if($#发布[';编辑#提交';]))

MySQL数据库项不会更新。PHP不会输入if($#发布[';编辑#提交';])),php,html,mysql,database,phpmyadmin,Php,Html,Mysql,Database,Phpmyadmin,我正在尝试使用任务的新值更新我的任务页面。我的表单如下所示: <?php if (isset($_GET['edit_task'])): ?> <form action="" method="POST" class="form-inline"> <td class="task"> <div class="form-group mr-sm-3 mb-2 inputfield">

我正在尝试使用任务的新值更新我的任务页面。我的表单如下所示:

<?php if (isset($_GET['edit_task'])): ?>
    <form action="" method="POST" class="form-inline">
        <td class="task">
            <div class="form-group mr-sm-3 mb-2 inputfield">
                <input type="text" name="taskvalue" class="form-control col-12" value="<?php echo $row['task'] ?>">
            </div>
        </td>
        <td class="date">
            <div class="form-group mr-sm-3 mb-2 inputfield">
                <input type="date" name="datevalue" class="form-control col-12" value="<?php echo $row['duedate'] ?>">
            </div>                                    
        </td>
        <td class="edit" style="font-size: 0.8rem;">
            <button type="submit" name="edit_submit" class="btn btn-primary mb-2">Edit</button>
            <input type="hidden" name="id" value="<?=$row['id']?>">
        </td>
    </form>
<?php else: ?>
    <td class="task">
        <?php echo $row['task'] ?>
    </td>
    <td class="date">
        <?php echo $row['duedate'] ?>
    </td>
    <td class="delete edit move" style="font-size: 0.8rem;">
        <a href="index.php?move_task=<?php echo $row ['id']; ?>"><i class="fas fa-check-square fa-2x"></i></a>
        <a href="index.php?edit_task=<?php echo $row ['id']; ?>"><i class="fas fa-pen-square fa-2x"></i></a>
        <a href="index.php?del_task=<?php echo $row ['id']; ?>"><i class="fas fa-minus-square fa-2x"></i></a>
    </td>
<?php endif ?>
//edit items to database
if (isset($_GET['edit_task'])) {
    if (isset($_POST['edit_submit'])) {
        $id = $_POST['id'];
        $task = $_POST['taskvalue'];
        $rawdate = htmlentities($_POST['datevalue']);
        $insertdate = date("Y-m-d", strtotime($rawdate));

        if (empty($task)) {
            $message['type'] = "error";
            $message['text'] = "You must fill in a task first.";
        } else {
            mysqli_query($db, "UPDATE tasks (task, duedate) SET (task = '$task', duedate = $insertdate) WHERE id = $id");

            header('location: index.php');
        }
        $debuglog2 = "edit task working 2";
    }
    $debuglog1 = "edit task working 1";
}
您将看到
$debuglog1=“编辑任务工作1”?当我按下时,它会在我的页面中显示这个。所以第一个
if(isset($\u GET['edit\u task'])
正在工作。第二个调试日志,
$debuglog2
,在我按下后不会显示在我的网站上,因此我认为它不会进入
if(设置($\u POST['edit\u submit'])
)。这两个调试日志在我的HTML中都在我的表外回显。按下上面的链接可以访问图标和按钮的图像。这是一段总结我的问题的视频

该应用程序还能够向数据库中添加任务。这部分很好用。我使用相同的表单来更新我的任务,除了name属性不同,我使用相同的PHP脚本来更新任务,除了这个表单有一个更新查询并检查是否在开始时按下了edit图标


我尝试过切换
如果
s,我在我的表单中放置并输入了隐藏id
元素,我的按钮名为
edit\u submit
,我的表单名为
POST
。我不知道为什么它不会进入第二个if语句。我认为我的SQL查询是正确的,尽管它甚至不会在同一层次结构中显示调试日志。我试过在
$\u GET
$\u POST
之间切换,但没有任何变化。这是在SQL中可以做的最简单的事情之一,但我无法让它工作。YouTube和其他论坛帖子已经告诉我我输入了什么,所以我不知道是什么错了。有人能帮忙吗?提前感谢。

当表单发布时,$\u GET变量将不包含任何内容。只有$\u POST将包含数据。因此,您对$\u GET的检查失败了,这正是因为您发布了一个表单

日志文件(对于apache web服务器)通常位于名为/var/log/apache2/error.log和/var/log/apache2/access.log的文件中(对于*nix环境)

通常可以打开终端并键入以下内容:


sudo tail-f/var/log/apache2/error.log。。。这将不断更新您的终端,最新的日志由apache2积累。。。这也将显示您的PHP错误,这将使您的生活更加轻松。

$\u GET['edit\u task']提交表单时,POST请求中不会设置
。@arkascha你是什么意思?在实现实际更新尝试的代码中,你测试两个超全局数组的变量:
$\u GET
$\u POST
。您的表单定义了一个POST请求,但没有指定URL,因此我假设
$\u GET
不包含任何值。这将导致您永远不会输入更新逻辑。除此之外:您的代码容易受到sql注入攻击。您肯定想了解结合使用“预处理语句”和“参数绑定”来防止此类漏洞的好处。@arkascha okey,我将
action=“”
更改为
action=“index.php”
,但它仍然不会做任何事情。“当表单发布时,$\u GET变量将没有任何内容。”-那可能不是真的。
$\u GET
超全局将包含查询字符串中的任何内容。由于
操作
设置为
,因此发布表单时的查询字符串将包含加载包含表单的页面时查询字符串中的任何内容。哦,好的,哎呀!:)谢谢你的信息@Quentin