簡體   English   中英

PHP / MySQL:如何從一個查詢中包含特定ID的數據庫中刪除所有數據

[英]PHP/MySQL : How to delete all data from database which contains specific id in one query

在我的數據庫中,我有32個表,大多數表包含相同的ID。 如何在一個查詢中刪除整個數據庫中僅包含特定ID的所有數據(我的意思是每個包含該特定ID的表)。

DELETE * from (ALL TABLES) where id = 3;

好問題。 查詢可能是對此的最佳解決方案。

我在下面提供了使用PHP作為您指定的PHP標簽的解決方案

<?php
require("db_connect.php");
$tables = mysqli_query($con, "SHOW TABLES FROM dbname");
while ($row = mysqli_fetch_assoc($tables)) {
    $table_name = $row["Tables_in_dbname"];
    mysqli_query($con, "DELETE FROM $table_name WHERE `id`=3");
}
?>

要么

再創建一個表,在其中每天輸入需要從所有表中刪除的id ,每天您可能會得到要從所有表中刪除的id的不同列表。

在下面,我創建了一個表ids_to_delete ,其中指定了要刪除的ID列表。

<?php
require("db_connect.php");
//get ids from table where specified ids to be deleted
$ids     = mysqli_query($con, "SELECT `id` FROM `ids_to_delete`");
$id_list = '';
//create ids list like 1,4,3,9,5,6,...
while ($row_id = mysqli_fetch_assoc($tables)) {
    $id_list .= $row_id['id'] . ',';
}
$id_list = trim($id_list, ',');

$tables = mysqli_query($con, "SHOW TABLES FROM dbname");
while ($row = mysqli_fetch_assoc($tables)) {
    $table_name = $row["Tables_in_dbname"];
    mysqli_query($con, "DELETE FROM $table_name WHERE `id` IN ($id_list)");
}
//clear the ids_to_delete table
mysqli_query($con,"DELETE FROM `ids_to_delete`");
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM