【问题标题】:Form to delete data from MySQL database using PHP使用PHP从MySQL数据库中删除数据的表单
【发布时间】:2015-03-07 13:59:29
【问题描述】:

所以我正在创建一个带有 2 个表单的小程序,一个用于将数据添加到数据库,一个用于从中删除。我已经设法创建了第一个输入表单,但我对如何让第二个表单工作感到有些困惑。在数据库“任务”中,我有一个名为“ID”的表,其中包含“ID”、“名称”和“小时”列

这是两个 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>

还有用于插入数据的第一个表单“添加任务”的 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 格式。我基本上重用了第一种形式的代码。我需要以某种方式将它与第一个按钮区分开来吗?目前该页面显示为完全空白。我是一个完全的新手,所以任何帮助将不胜感激。

【问题讨论】:

  • 首先您应该为删除按钮添加一个名称,以便能够在服务器端isset($_GET["delete") 上识别它。然后你应该熟悉 SQL 查询。
  • 从 ID (ID) 值中删除 - 我不熟悉该语法。另外,请参阅 PHP/PDO/mysqli 中的准备语句

标签: php mysql database forms sql-delete


【解决方案1】:

你的 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"])

【讨论】:

    【解决方案2】:

    我看到您在表单中有名称“ID”,但您正在尝试获取“id”。这可能是问题

    【讨论】:

      【解决方案3】:

      删除的sql语句应该类似于下面的sn-p。

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

      【讨论】:

        【解决方案4】:

        除了上述答案之外,您还应该为 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"使用相同的名称,那么您可以在一个表单上使用POST方法并且GET 另一个方法。

        是的,mysql_real_escape_string 用于防止 SQL INJECTION

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-06
          • 1970-01-01
          • 2015-07-21
          • 2019-08-19
          • 2015-11-20
          相关资源
          最近更新 更多