複数のテーブルから行を削除しようとしています。私は以下の質問を見てきましたが、どれも私の問題を解決していないようです。どんなに私は、私は次のようなエラーになっ維持しようとするもの:ここでPHPでSQLを使用して複数のテーブルを削除する
Fatal error: Call to a member function bind_param() on a non-object
を私は新しい質問をする前に、私は私を助けしようとするを見てきたいくつかの質問ではありません。
Deleting rows from multiple tables in MySQL
MySQL delete row from multiple tables
基本的にはどのような私が作るしようとしていることは、ユーザーが自分のアカウントを削除することを可能にする機能です。彼らのアカウントは4つの異なるテーブルに情報を持ち、各テーブルは共通の「ID」を持っていますが、名前は異なっています。
私が続行する前に、ユーザーがテーブルのいずれかに情報を保存していない場合があります。
table users
user_id | firstname | surname
-------------------------------
10 | Joe | Bloggs
16 | Jane | Doe
table pets
pet_id | pet_user_id | pet_name
-------------------------------
1 | 10 | Rover
2 | 16 | Jess
table report
report_id | rep_user_id | rep_content
-------------------------------
1 | 10 | Hello World
2 | 16 | Goodbye World
table user_files
file_id | file_user_id| file
-------------------------------
1 | 10 | agreement.pdf
2 | 16 | cv.docx
だから私はこれらのテーブルのそれぞれからの16のIDを持つユーザーを削除すると言う:これがある場合、エラーがここ
を投げている理由を知ってはいけないことは、私のテーブル構造です。これまでに私が試したことは次のとおりです。
まず:
$stmt = $conn->prepare('DELETE * FROM users, pets, report, user_files WHERE user_id = ?, pet_user_id = ?, rep_user_id = ?, file_user_id = ? ');
第二:
$stmt = $conn->prepare('DELETE users.*, pets.*, reports.*, user_files.* FROM users LEFT JOIN pets ON pets.pet_user_id=users.user_id LEFT JOIN report ON report.rep_user_id=users.user_id LEFT JOIN user_files ON user_files.user_id=users.user_id WHERE user_id = ?');
サード:
$stmt = $conn->prepare('DELETE users, pets, report, user_files FROM
table1 as users
INNER JOIN table2 as pets on users.user_id = pets.pet_user_id
INNER JOIN table3 as report on users.user_id=report.rep_user_id
INNER JOIN table4 as user_files on users.user_id=user_files.user_id
WHERE users.user_id= ?');
セッション変数から$user_id
が定義されています。
関連するテーブルの関連項目を削除するためにdb内にトリガーを設定する方が簡単ではないでしょうか? – Jeff
@ Jeff以前はトリガーについて聞いたことがありませんでしたが、Googleで検索したところ、この記事のhttps://www.sitepoint.com/database-triggers-events/には、外部キー制約を使用する必要があります。 –
クエリが失敗したため、理由を調べて実際のエラーを確認する必要があります。あなたが掲示したものは十分なコードではなく、どのコードが実行され、どのように実行されるのでしょうか?ここでは複数のクエリを実行したいと思うようです。あなたが投稿したものを与えてください。エラー報告と 'mysqli_error($ conn)'をここで使うことができます。 –