无法从表中删除一条特定记录

问题描述 投票:-2回答:2

我目前对搜索感到沮丧,没有文章可以帮助我。我只想删除一行或一条记录,但最终要删除表上的整个记录​​

     <?php
// include database connection file
$databaseHost = 'localhost';
$databaseName = 'ceksaldo';
$databaseUsername = 'root';
$databasePassword = '';

$conn = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName); 

// Get id from URL to delete that saldo
$id = $_GET['id'];

// Delete saldo row from table based on given id
//$result = mysqli_query($mysqli, "DELETE FROM saldo WHERE id=$id");
$result ="DELETE FROM saldo WHERE id";
if (mysqli_query($conn, $result)) {
    echo "Record deleted successfully";
} else {
    echo "Error deleting record: " . mysqli_error($conn);
}

mysqli_close($conn);

// After delete redirect to Home, so that latest saldo list will be displayed.
echo "<a href=index.php>Home</a>"
?>

enter image description here

我希望它能自动删除特定数据,我在某些文章中发现他们使用ID号删除记录。请帮助我,抱歉英语不好

php mysql delete-row
2个回答
1
投票
$result ="DELETE FROM saldo WHERE id";

不说ID应该是什么。这将删除every行!

您应该对此查询进行更新,指定要删除的记录。

$result ="DELETE FROM saldo WHERE id = $id";

更大的问题是,在代码的图片中没有'id'列,因此您需要将查询绑定到唯一标识每一行的内容。您可能需要更新表格,或者可能不会向我们显示整个表格。

警告

Little Bobby表示[your script is at risk for SQL Injection Attacks.了解有关preparedMySQLi语句。甚至escaping the string都不安全!


0
投票

要删除特定行,需要使用WHERE中的ID。>

DELETE FROM saldo WHERE id=?

因为不适合将变量传递给查询mysqli_query()。您需要使用准备好的语句。然后,您可以绑定值并执行。

要将值发送到PHP,您需要使用链接或表单。

链接:

<a href="delete.php?id=123">Delete item with ID 123</a>

或采用形式:

<form method="get">
<input type="text" name="id" />
<input type="submit" value="Delete" />
</form>

您的固定代码应如下所示。请注意,我已启用错误报告,您应该始终这样做。我还添加了if语句,因为您只想在特定ID已传递到脚本的情况下执行查询。

<?php

// include database connection file
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = mysqli_connect('localhost', 'root', '', 'ceksaldo');
$conn->set_charset('utf8mb4'); // always set the charset

// Get id from URL to delete that saldo
if (isset($_GET['id'])) {
    $id = $_GET['id'];

    // Delete saldo row from table based on given id
    $stmt = $conn->prepare('DELETE FROM saldo WHERE id=?');
    $stmt->bind_param('s', $id);
    $stmt->execute();
    echo "Record deleted successfully";
}

echo 'No ID selected. No record deleted!';

// After delete redirect to Home, so that latest saldo list will be displayed.
echo "<a href=index.php>Home</a>";
© www.soinside.com 2019 - 2024. All rights reserved.