gpt4 book ai didi

php - 试图删除我的表格中显示的数据

转载 作者:行者123 更新时间:2023-11-28 23:38:33 25 4
gpt4 key购买 nike

我已经能够在我的网站上显示我的数据库中的数据,并且我正在尝试删除一行。

现在按钮可以工作了,但是它会完全删除所有内容,正如您从代码中看到的那样。

我不知道如何将删除按钮分配到我表中的特定行,它只是删除该特定行中的数据。

最重要的是,我的 table 上有一个删除按钮,但不知道如何为给定的每一行设置单独的删除按钮。

admin.php(显示我的数据)

<?php

echo "<table style='box'>";
echo "<tr><th>ID</th><th>First Name</th><th>Last Name</th><th>Role</th>
<th>Email</th><th>Username</th><th>Delete</th><th>Amend</th></tr>";

class TableRows extends RecursiveIteratorIterator {

function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}

function current() {
return "<td style='box'>" . parent::current(). "</td>";
}
function beginChildren(){
echo "<tr>";
}

function endChildren(){
echo "</tr>";
}
}

require 'connection.php';

try {
$stmt = $conn->prepare("SELECT id, FirstName, LastName, Role, Email, Username FROM users");
$stmt->execute();

$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v){
echo $v;
}
}
catch (PDOException $e){
echo "Error: " . $e->getMessage();
}

$conn = null;
?>

<form method="post" action="delete.php">
<input <input class="btn-default" type="submit" name="login" value="Delete">
</form>

<?php
echo "</table>";

?>

删除.php

<?php
$servername = 'localhost';
$username = 'root';
$pass = 'root';
$database = 'tutor_database';

try {
$conn = new PDO("mysql:host=$servername;dbname=$database", $username, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//sql to delete record.
$sql = "DELETE FROM users WHERE id = id";

$conn->exec($sql);
echo "Record deleted!";

} catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;

?>

我想展示一张图片,但我没有足够的声誉点数来展示它。

最佳答案

WHERE您的 DELETE 中的条款语句将始终返回 true。在每一行,ID 将始终等于 ID。因此,所有内容都被删除。您需要传递一个参数来删除脚本以过滤要删除的行。您可以使用 get="method" 通过隐藏的 HTML 输入值来做到这一点的 <form> .

但是,关键是如何从网页的选择查询中获取该id。此外,您需要将输入按钮放在每行的末尾以删除相应行的 ID。对于这两项,您可能必须返回到网页上的传统循环而不是 RecursiveArrayIterator()因为我们需要将一个非获取对象(表单删除按钮)添加到表中。

admin.php (通知表单按钮作为每行的最后一个表格单元格)

...same code as above...

try {
$stmt = $conn->prepare("SELECT id, FirstName, LastName, Role, Email, Username FROM users");
$stmt->execute();

$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

while($row = $result->fetch()) {
?>
<tr>
<td style="box"> <?php echo $row['id']; ?></td>
<td style="box"> <?php echo $row['FirstName']; ?></td>
<td style="box"> <?php echo $row['LastName']; ?></td>
<td style="box"> <?php echo $row['Role']; ?></td>
<td style="box"> <?php echo $row['Email']; ?></td>
<td style="box"> <?php echo $row['Username']; ?></td>
<td>
<form method="get" action="delete.php">
<input type="hidden" name="rowid" value="<?php echo $row['id']; ?>">
<input class="btn-default" type="submit" name="login" value="Delete">
</form>
</td>
<tr>
<?php
}
}
catch (PDOException $e){
echo "Error: " . $e->getMessage();
}

$conn = null;

delete.php (注意 $id 从 $GET() 生成并用于删除查询)

$servername = 'localhost';
$username = 'root';
$pass = 'root';
$database = 'tutor_database';

try {
$conn = new PDO("mysql:host=$servername;dbname=$database", $username, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// OBTAIN ROWID FROM $_GET
if(isset($_GET['rowid'])) {
$id = $_GET['rowid'];
}

// DELETE SPECIFIED ROW
$sql = "DELETE FROM users WHERE id = ".$id;

$conn->exec($sql);
echo "Record deleted!";

} catch(PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;

关于php - 试图删除我的表格中显示的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35075666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com