<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";
}
}
单击名称为deletetrainid的按钮时,什么也没有发生,并且输入字段显示为空,再次填充。没有数据/行被删除。有什么帮助吗?
答案 0 :(得分:1)
查看您的代码,我可以看到可能出错的几件事。 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.";
}
因此,第一:
您在第一个 ISSET deleteTrain
上期望的信息不会显示在任何地方,也不会在任何地方设置,因此它永远不会触发表单。
第二: 您不需要两种形式,而且,只有第二种形式具有method ='POST'和操作集,您可以在第一种形式中进行设置。没有这种形式,您只能通过$ _GET获取信息。>
第三: 您忘记在查询的文本变量上加上引号。这是行不通的,因为需要用引号将字符串引起来。
您一定会犯错误(确实有很多错误),所以请不要让它失望。 利用诸如 var_dump , get_defined_vars(), print | echo | print_r , die()之类的东西。 .. 可以帮助您了解所有代码状况的一切,然后再寻求帮助,因此至少可以大致了解什么地方出了什么问题以及在哪里。
答案 1 :(得分:0)
在您的表单中,您无法添加属性:action
和method
。
您主题中 action 中的值是""
,而 method 中的值是POST