使用php从表中删除值

使用php从表中删除值,php,mysql,Php,Mysql,我有一个表(php)与删除按钮除了每一行。我试图通过提交按钮将行的id传递给我的查询。提交时没有错误,但行未被删除 以下是我的表格的源代码: <?php include ("dbh.php"); $sql_showBooking = "SELECT tid, ticket, bk_email, price FROM ticket_purchase"; $result = $conn->query($sql_showBooking); if ($result->num_row

我有一个表(php)与删除按钮除了每一行。我试图通过提交按钮将行的id传递给我的查询。提交时没有错误,但行未被删除

以下是我的表格的源代码:

<?php
include ("dbh.php");

$sql_showBooking = "SELECT tid, ticket, bk_email, price FROM ticket_purchase";
$result = $conn->query($sql_showBooking);

if ($result->num_rows > 0) {
    echo "<table><tr><th>No.</th><th>Ticket</th><th>Email</th><th>Price</th>
<th>Action</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "<td>".$row["tid"]."</td>";
        echo "<td>".$row["ticket"]."</td>";
        echo "<td>".$row["bk_email"]."</td>";
        echo "<td>".$row["price"]."</td>";
        echo '<form novalidate="novalidate" role="form" method="post" action="delete.php?id='.$row['tid'].'">
            <td><input type="submit" class="btn btn-block" name="btnDelete" value="Delete"/></td>
          </from>';
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>

PHP(删除)


尽管表单确实发送POST请求,但数据本身是通过GET发送的,这可以通过操作属性得到证明:
action=“delete.php?id=”.$row['tid'].>

您可以在delete.php中使用$\u GET而不是$\u POST,也可以在表单中添加隐藏输入并将其值设置为$row['tid']:

<input type = "hidden" value = "<?= $row['tid'] ?>" />

尽管表单确实发送POST请求,但数据本身是通过GET发送的,这可以通过操作属性得到证明:
action=“delete.php?id=”.$row['tid'].>

您可以在delete.php中使用$\u GET而不是$\u POST,也可以在表单中添加隐藏输入并将其值设置为$row['tid']:

<input type = "hidden" value = "<?= $row['tid'] ?>" />
试试这个

<?php
include ("dbh.php");

$sql_showBooking = "SELECT tid, ticket, bk_email, price FROM ticket_purchase";
$result = $conn->query($sql_showBooking);

if ($result->num_rows > 0) {
    echo "<table><tr><th>No.</th><th>Ticket</th><th>Email</th><th>Price</th>
<th>Action</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "<td>".$row["tid"]."</td>";
        echo "<td>".$row["ticket"]."</td>";
        echo "<td>".$row["bk_email"]."</td>";
        echo "<td>".$row["price"]."</td>";
        echo '<td><a href = "delete.php?tid='.$row['tid'].' ">Delete</a></td>'; //change this line
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>


<?php
session_start();
include ("dbh.php");

if(isset($_REQUEST["tid"])){ //change

    $tid_delete = $_REQUEST['tid']; //changes

    $sql_delete = "delete from ticket_purchase where tid='$tid_delete'";

    mysqli_query($conn, $sql_delete);

    mysqli_close($conn);

    header("Location: Coldplay.php");
}

?>

试试这个

<?php
include ("dbh.php");

$sql_showBooking = "SELECT tid, ticket, bk_email, price FROM ticket_purchase";
$result = $conn->query($sql_showBooking);

if ($result->num_rows > 0) {
    echo "<table><tr><th>No.</th><th>Ticket</th><th>Email</th><th>Price</th>
<th>Action</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "<td>".$row["tid"]."</td>";
        echo "<td>".$row["ticket"]."</td>";
        echo "<td>".$row["bk_email"]."</td>";
        echo "<td>".$row["price"]."</td>";
        echo '<td><a href = "delete.php?tid='.$row['tid'].' ">Delete</a></td>'; //change this line
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>


<?php
session_start();
include ("dbh.php");

if(isset($_REQUEST["tid"])){ //change

    $tid_delete = $_REQUEST['tid']; //changes

    $sql_delete = "delete from ticket_purchase where tid='$tid_delete'";

    mysqli_query($conn, $sql_delete);

    mysqli_close($conn);

    header("Location: Coldplay.php");
}

?>



首先,您需要了解HTTP GET和POST请求是如何工作的,以及PHP如何处理这些不同的请求类型。去仔细阅读这篇文章。。然后,基本上您的“删除”按钮需要将POST请求发送回服务器。要做到这一点,最简单的方法是在按钮周围添加一个标签,将按钮类型更改为“提交”,并确保在按钮中包含ID并将其记录为隐藏字段。谢谢。我只是这么做了,但似乎它没有将我表格中的id返回到我的query@SyntaxGoonoo我刚刚根据你的建议编辑了我的帖子,你能看一下吗?id值需要呈现在中的一个字段中,而不是作为url参数添加。POST请求通过表单字段将数据提交回服务器。只有GET请求使用url参数。你必须明白这一点。您应该阅读HTTP请求方法和RESTful体系结构。首先,您需要了解HTTP GET和POST请求是如何工作的,以及PHP如何处理这些不同的请求类型。去仔细阅读这篇文章。。然后,基本上您的“删除”按钮需要将POST请求发送回服务器。要做到这一点,最简单的方法是在按钮周围添加一个标签,将按钮类型更改为“提交”,并确保在按钮中包含ID并将其记录为隐藏字段。谢谢。我只是这么做了,但似乎它没有将我表格中的id返回到我的query@SyntaxGoonoo我刚刚根据你的建议编辑了我的帖子,你能看一下吗?id值需要呈现在中的一个字段中,而不是作为url参数添加。POST请求通过表单字段将数据提交回服务器。只有GET请求使用url参数。你必须明白这一点。您应该阅读HTTP请求方法和RESTful体系结构。它很有效!嗯,我不太懂这个方法,我会设法弄明白的。多谢各位$_请求包括$\u GET和$\u POST,这使得上面的代码与使用的HTTP方法无关。真的很感谢我能在这里学到新的东西。再次感谢您确实应该通过POST请求删除记录。i、 e.GET从服务器中提取数据,但不更改数据。POST将数据发送到服务器,目的是更改基础数据存储中数据的状态,例如更新或删除。它可以工作!嗯,我不太懂这个方法,我会设法弄明白的。多谢各位$_请求包括$\u GET和$\u POST,这使得上面的代码与使用的HTTP方法无关。真的很感谢我能在这里学到新的东西。再次感谢您确实应该通过POST请求删除记录。i、 e.GET从服务器中提取数据,但不更改数据。POST将数据发送到服务器,目的是更改基础数据存储中该数据的状态,例如更新或删除。结果表明,查询是有效的,因为它会将我引导到(如果是isset)中的位置,但值也不会更改。不管怎样,它现在可以工作了,谢谢一个lotNo问题,很高兴你修复了它。结果表明,查询是工作的,因为它将我引导到(if-isset)中的位置,但是值也没有改变。不管怎样,它现在可以工作了,谢谢。没问题,很高兴你把它修好了。