2012-03-11 9 views
1

tableOk私は、各テーブルには、カラムIDを持っているmysqlの内の1つのデータベースに複数のテーブル削除データ

DATABASE1

table1 

table2 

table3 

table4 

table5 

を持っているので、私がやりたいことは、次の

です

idが一致するたびにその行を削除します。すべてのテーブルで954001の行を削除してください。私のデータベースを殺すことなくこれを行う最善の方法は何ですか。 Btwすべてのidsは全面的に一致します。

<?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(); 

?> 

答えて

6

テーブルごとにDELETEステートメントが必要です。一貫性が心配な場合は、トランザクションを使用できます。

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; 

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(); 
+0

どのようにPHPでこれを行うことができますか? –

+1

たとえば、PDOを使用している場合は、[beginTransaction()](http://us.php.net/manual/en/pdo.begintransaction.php)と[commit()](http ://us.php.net/manual/en/pdo.commit.php)。 –

+0

これを試しましたが、何かがうまくいきません。上記のコードを追加しました。 –

0

あなたが最初の削除

0

に起こって削除してトリガを書くことができ、私は基本的にあなたが別のステートメントをしなければならないと思いますテーブルごとに

このフォーラムは、あなたに興味がある可能性があります。このような

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

何か、私は信じている - 私のSQLが錆びですが。

delete from table1 where id='954001';

+0

'DELETE'文の' * 'が間違っています。 –

関連する問題