我正在尝试在我的网站上添加一个php按钮,但它似乎无法正常工作。
删除php脚本是;
if(isset($_POST["delete"])) {
$delquery = "DELETE FROM emails WHERE ID=$_POST["delete"]";
mysqli_query($connection, $delquery);
}
表单看起来像是在同一个文件中;
<form action="email-response.php" method="post">
<input type="hidden" name="hidden" value="<?php echo $row['ID']; ?>">
<input type="submit" name="delete" value="delete">
</form>
然而,每当我点击删除按钮时,都没有发生任何事情。
关于回复说我的$ connection函数是错误的,这是函数,但它正在工作,因为它是为我的帖子获取我的信息。
define("DB_SERVER", "myservername");
define("DB_USER", "myusername"); //username
define("DB_PASS", "mypassword"); //password
define("DB_NAME", "mydbname"); // database name
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
if(mysqli_connect_errno()) {
die("Database connection failed: " .
mysqli_connect_error() .
" (" . mysqli_connect_errno() . ")"
);
} else {
echo "connected";
}
答案 0 :(得分:3)
您要删除的元素名为hidden
,而不是delete
。
将您的查询更改为:
if(isset($_POST["delete"]) && !empty($_POST["hidden"])){
$id = mysqli_real_escape_string($connection, $_POST["hidden"]);
}
$delquery = "DELETE FROM emails WHERE ID='$id'";
mysqli_query($connection, $delquery) or die(mysqli_error($connection));
if(mysqli_affected_rows($connection)){
echo "It was really successful.";
}
isset($_POST["delete"])
用于检查是否点击了提交按钮。
使用mysqli_affected_rows()
会显示您的查询是否真的成功
这是我经常使用的功能。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
旁注:使用您现有的方法,让您对SQL injection开放。
使用mysqli
with prepared statements或PDO with prepared statements,它们更安全。
答案 1 :(得分:1)
你的联系很好。
这是一个有效且简单的解决方案:
您的表格:
<form action="#" method="post">
<input type="hidden" name="to_delete" value="<?php echo $row['ID']; ?>">
<input type="submit" name="delete" value="delete">
</form>
您的删除脚本:
if(isset($_POST["delete"]))
{
$delquery = "DELETE FROM user WHERE ID=".$_POST['to_delete']."";
mysqli_query($connection, $delquery);
}