简体   繁体   English

从多个mysql表中删除数据

[英]Delete data from multiple mysql tables

tableOk so what I want to do is the following tableOk所以我想做的是以下

I have multiple tables on one database in mysql 我在mysql中的一个数据库上有多个表

database1 数据库1

table1

table2

table3

table4

table5

each table has a column id 每个表都有一个列ID

for every id matched i want to delete that row. 对于每个匹配的ID,我想删除该行。 so delete 954001 row in every table. 因此请删除每个表中的954001行。 What is the best way to do this WITHOUT killing my database. 这样做的最好方法是不杀死我的数据库。 Btw all ids match across the board. 顺便说一句,所有ID全面匹配。

<?php
// get value of id that sent from address bar
$customer_id=$_GET['id'];
$id=$_GET['id'];
// Delete data in mysql from row that has this id
$sql="DELETE FROM teable_users WHERE customer_id = $customer_id;
DELETE FROM table_parties WHERE id = $id;
DELETE FROM table_weddings WHERE id = $id;
DELETE FROM table WHERE id = $id;
DELETE FROM table_request_client WHERE id = $id;
DELETE FROM table_requests WHERE id = $id;
DELETE FROM table_users WHERE id = $id;";

$result=mysql_query($sql);

// if successfully deleted
if($result){
echo "Deleted Successfully";
echo "<BR>";
echo "<a href='text.php'>Back to Event    Manager</a>";
}

else {
echo "ERROR";
}

// close connection
mysql_close();

?>

You need a DELETE statement for each table. 每个表都需要一个DELETE语句。 You could use a transaction if you are worried about consistency. 如果您担心一致性,可以使用事务。

BEGIN TRANSACTION;
DELETE FROM table1 WHERE id = 1;
DELETE FROM table2 WHERE id = 1;
DELETE FROM table3 WHERE id = 1;
DELETE FROM table4 WHERE id = 1;
DELETE FROM table5 WHERE id = 1;
COMMIT;

PHP example using PDO (not tested) 使用PDO的 PHP示例(未经测试)

$id = (int) $_GET['id'];
$pdo->beginTransaction();
$st = $pdo->prepare('DELETE FROM table1 WHERE id = :id');
$st->execute(array(':id', $id));
$st = $pdo->prepare('DELETE FROM table2 WHERE id = :id');
$st->execute(array(':id', $id));
$st = $pdo->prepare('DELETE FROM table3 WHERE id = :id');
$st->execute(array(':id', $id));
$st = $pdo->prepare('DELETE FROM table4 WHERE id = :id');
$st->execute(array(':id', $id));
$st = $pdo->prepare('DELETE FROM table5 WHERE id = :id');
$st->execute(array(':id', $id));
$pdo->commit();

您可以编写一个触发器,其中包含在初始删除时发生的删除

I think essentially you'll have to do separate statements for each table. 我认为从本质上讲,您将必须为每个表单独编写语句。

This forum may be of interest to you: 您可能对这个论坛感兴趣:

http://forums.devshed.com/database-management-46/one-query-to-delete-from-multiple-tables-71959.html http://forums.devshed.com/database-management-46/one-query-to-delete-from-multiple-tables-71959.html

Something like this, I believe -- although my SQL is rusty. 我相信这样的事情-尽管我的SQL生锈了。

delete from table1 where id='954001';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM