如何使用 PHP/HTML 表单从 SQL 中删除数据


How to delete data from SQL, using PHP/HTML form

我有一个关于使用 php 形式从 SQL 中删除数据的问题。

我的 php 表单是这样的:(我猜这只是 HTML)

<html>
    <body>
        <form action="delete.php" method="get">
          Uporabniško ime <input type="text" name="user"><br>
          <input type="submit" value="Submit">
        </form>
    </body>
</html>

然后我有应该从我的 sql 中删除的代码,称为 delete.php:

<?php
    $servername = "localhost";
    $username = "test";
    $password = "test";
    $dbname = "iss";
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $user = $_POST['user'];

    /*if (is_int($_GET['up_ime']) 
        $query = "DELETE FROM uporabniki WHERE up_ime = " . $_GET['up_ime'];
        $result = mysqli_query($con, $query);
        // Check the result and post confirm message
    }*/
    $sql = "DELETE FROM iss.uporabniki WHERE uporabniki.up_ime = " .$_POST['user'];
?>

在我的sql数据库中,我有一个名为"iss"的数据库和名为"uporabniki"的表。 up_ime是唯一的,基本上是用户名。所以我正在尝试制作表单,我可以在其中写入用户名,当我单击提交时,该用户应从SQL数据库中删除。我不知道我做错了什么以及为什么这不起作用。

你用html编写method="get",用php写你用$_POST。正确更改此设置,您的代码将成功运行。

只需像这样更改表单方法:

<form action="delete.php" method="post">

并且不要忘记执行查询:

$sql = "DELETE FROM iss.uporabniki WHERE uporabniki.up_ime = " .$_POST['user'];
$delete_result = mysqli_query($conn, $sql) ;

参考此 W3 文档 http/1.1 方法定义

这应该是如何编写专用于删除某些内容的表单

<html>
    <body>
        <form action="delete.php" method="delete">
          Uporabniško ime <input type="text" name="user"><br>
          <input type="submit" value="Submit">
        </form>
    </body>
</html>

这将是接收请求的 php(我也建议您使用,而不是mysqliPDO我将在我的答案中使用)

<?php
    $host= "localhost";
    $username = "test";
    $password = "test";
    $dbname = "iss";
    // Create connection and catch possible error
    try {
        $conn = new PDO('mysql:host='.$host.';dbname='.$dbname.', '.$username.', '.$password);}
    catch (Exception $e)
    {
        die('Error : ' . $e->getMessage());
    } 
    if (isset($_DELETE['user'] && !empty($_DELETE['user'])) {
        $user = $_DELETE['user'];
    } else {
        // if $_DELETE['user'] is not set or empty we close the transaction
        $pdo = null;
        die('Error : user is undefined');
    }
    $stmt = $conn->prepare("DELETE FROM iss.uporabniki WHERE uporabniki.up_ime = :user");
    // we bind parameter to reduce the risk of injection
    $stmt->bindparam(:user, $user, PDO::PARAM_STR);
    $stmt->execute();
    $stmt = null;
    $pdo = null;
?>

希望这将对您或其他人将来有所帮助!