使用 PHP 从 MySQL 数据库中删除数据的表单

Form to delete data from MySQL database using PHP

所以我正在创建一个包含 2 种形式的小程序,一种用于将数据添加到数据库,一种用于从数据库中删除。我已经成功地创建了第一个输入表单,但我对如何让第二个表单工作感到有些困惑。在数据库 "tasks" 中,我有一个名为 "ID" 的 table,其中包含列 "ID"、"Name" 和 "Hours"

下面是两个 HTML 表格的样子

<h2>Add Tasks</h2> 
<form action="test.php" method="get">
Name of Task: <input type="text" name="name"><br />
Hours: <input type="number" name="hours"><br />
<input type="submit" value="Add" name="submit">
</form>

<h2>Delete Tasks</h2> 
<form action="delete.php" method="get">
ID: <input type="number" name="ID"><br />
<input type="submit" value="Delete">
</form>

第一个表单 "Add tasks" 插入数据的 PHP

$servername = "localhost";
$username = "root";
$password = "root";


$conn = new mysqli($servername, $username, $password, "Tasks");


if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
};


if (isset($_GET['submit'])) {

mysqli_select_db ($conn,"Tasks");
$name = $_GET['name'];
$hours = $_GET['hours'];

$sql = "INSERT INTO ID (Name, Hours) VALUES ('".$name."','". $hours."')";
$results = mysqli_query($conn,$sql);


$query = "SELECT `Name` FROM `ID`";
$result = mysqli_query($conn, $query);
$x=0;

和 PHP 用于删除任务的第二种形式。这是不起作用的部分

if (isset($_GET['submit'])) {
mysqli_select_db ($conn, "Tasks");
$id = $_GET['id'];
$sql = "DELETE FROM ID (ID) VALUES ('".$id."')";

$query = "SELECT `Name` FROM `ID`";
$result = mysqli_query($conn, $query);
$x=0;

我应该如何格式化第二个按钮的 PHP。我基本上重用了第一种形式的代码。我需要以某种方式将它与第一个按钮区分开来吗?当前该页面显示为完全空白。我是一个完全的新手,所以任何帮助将不胜感激。

我看到您在表单中输入了姓名 'ID',但您正在尝试获取 'id'。这可能是问题所在

用于删除的 sql 语句应该类似于下面的代码片段。

$sql = "DELETE FROM ID WHERE `id`=".$id.";";
$results = mysqli_query($conn,$sql);

您的SQL声明

"DELETE FROM ID (ID) VALUES ('".$id."')"

错了。

should be

DELETE FROM table_name
WHERE some_column=some_value;

。因此,将您的语句更改为

DELETE FROM ID WHERE ID='$id'

建议

  • 您应该使用 POST 方法进行操作,这将导致数据编辑。
  • 您应该检查输入,确保它不包含 SQL 语句。一个好的方法是使用 $stuff = mysql_real_escape_string($_GET["stuff"]).

除了上述答案之外,您还应该为 form input 标签提供不同的 name 作为

<h2>Add Tasks</h2> 
<form action="test.php" method="get">
    Name of Task: <input type="text" name="name"><br />
    Hours: <input type="number" name="hours"><br />
    <input type="submit" value="Add" name="submit">
</form>

<h2>Delete Tasks</h2> 
<form action="delete.php" method="get">
    ID: <input type="number" name="ID"><br />
    <input type="submit" value="Delete" name="delete">
</form>

所以要添加到数据库中,您可以使用

if (isset($_GET['submit'])){
    // your code here
}

要从数据库中删除,您可以使用

if (isset($_GET['delete'])){
    mysqli_select_db ($conn, "Tasks");
    $id = $_GET['id'];
    $sql = "DELETE FROM ID (ID) WHERE ID='".mysql_real_escape_string($id)."' ;

    $query = "SELECT `Name` FROM `ID`";
    $result = mysqli_query($conn, $query);
    $x=0;
}

这将解决所有问题。

如果您在两个 表单 中为 type="submit" 使用相同的 name,那么您可以使用 POST一个 form 方法和另一个 GET 方法。

是的,mysql_real_escape_string 用于防止SQL 注入