从表单中删除在mysql中不起作用的查询

ogq8wdun  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(213)
<form>
<input type='text' name='source' placeholder='source'/>
<input type='text' name='destination' placeholder='destination'/>
<input type='text' name='trainid' placeholder='trainid'/>
<input type='submit' name='deletetrainid'/>
</form>
<?php
if(isset($_POST['deleteTrain'])){
echo "ENTER TRAINID,SOURCE AND DESTINATION TO DELETE TRAIN ROUTE";
echo "<form action='adminPage.php' method='POST'><input type='text' 
name='trainid'/>";
echo"<input type='text' name='source' placeholder='ENTER SOURCE'/>";
echo"<input type='text' name='destination' placeholder='ENTER 
DESTINATION'/>";
echo"<input type='submit' name='deletetrainid'/>";
echo"</form>";
if (isset($_POST['deletetrainid'])) {
    $source = $_POST['source'];
    $destination = $_POST['destination'];
    $trainid =  $_POST['trainid'];
    $query = "DELETE FROM trains WHERE trainid=$trainid AND source=$source 
    AND destination=$destination";
    $result = mysqli_query($connection, $query);
    if(!$result){
        die("QUERY FAILED". mysqli_error($connection));
    }
    else
    echo "Record Deleted";
    }
    }

单击name=deletetrainid的按钮时,什么都不会发生,输入字段显示为空,可以再次填充。未删除任何数据/行。需要帮忙吗?

fzsnzjdm

fzsnzjdm1#

在窗体中,不能添加属性: action 以及 method . 在你的主题中,行动的价值是 "" 方法是 POST

ogsagwnx

ogsagwnx2#

看看你的代码,我可以看到一些事情可能会出错。sql注入攻击只是其中之一,就像提到的@luca。
但是,好吧,我做了我自己版本的代码,下面是我可以为你解决的问题,让你从某处获得信息。

<form action='adminPage.php' method='POST'>
    <input type='text' name='source' placeholder='source'/>
    <input type='text' name='destination' placeholder='destination'/>
    <input type='text' name='trainid' placeholder='trainid'/>
    <input type='submit' value'Submit'/>
</form>
<?php
    if (isset($_POST)) {
        $source = $_POST['source'];
        $destination = $_POST['destination'];
        $trainid =  $_POST['trainid'];
        $query = "DELETE FROM 
                      trains 
                  WHERE
                      trainid=$trainid 
                  AND 
                      source='$source' 
                  AND destination='$destination'";
        $result = mysqli_query($connection, $query);
        if(!$result){
            die("QUERY FAILED". mysqli_error($connection));
        }
        else
        echo "Record Deleted";
    } else {
        echo "Houston, we have a problem.";
    }

所以,首先:你期望的第一个信息集 deleteTrain 不会显示在任何地方,也不会设置在任何地方,它永远不会触发窗体。
第二:你不需要两个表单,另外,只有第二个表单设置了method='post'和action,你可以在第一个表单中设置。。如果没有这个,你只能在$u get之前获得信息。
第三:忘记在查询的文本变量上加引号。这是行不通的,因为字符串必须被引用。
你一定会犯错误(其中有好几个,真的),所以不要让它拖累你。使用诸如:var_dump、get_defined_vars()、print | echo | print | r、die()。。。在你需要寻求帮助之前,所有能帮助你找出代码中发生了什么的东西,这样你至少可以大致知道哪里出了问题,哪里出了问题。

相关问题