そのため、複数のテーブルから行を削除しようとしています。私は次の質問を見ましたが、どれも私の問題を解決していないようです。何をしようとしても、次のエラーが発生し続けます。
致命的なエラー:非オブジェクトのメンバー関数bind_param()の呼び出し
これが私が新しい質問をする前に私を助けようとするために私が見たいくつかの質問です。
基本的に私が作ろうとしているのは、ユーザーが自分のアカウントを削除できるようにする機能です。彼らのアカウントには4つの異なるテーブルの情報があり、各テーブルには共通の「id」がありますが、名前は異なります。
先に進む前に、ユーザーがテーブルの1つに情報を格納していない場合があるかもしれないと言わなければなりません。これがエラーがスローされる理由かどうかわからない
これが私のテーブル構造です:
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
したがって、これらの各テーブルからIDが16のユーザーを削除するとします。以下は私がこれまでに試したことです。
最初:
$stmt = $conn->prepare('DELETE * FROM users, pets, report, user_files WHERE user_id = ?, pet_user_id = ?, rep_user_id = ?, file_user_id = ? ');
2番目:
$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= ?');
?
使用してバインドされて$stmt->bind_param('i', $user_id);
いる$user_id
セッション変数から定義されています。
3番目のステートメントは機能するはずですが、左結合を使用して作成します。
次のSQL更新を試してください。
DELETE users, pets, report, 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.file_user_id=users.user_id)
WHERE users.user_id=?;
MySQLコンソールでこのステートメント(パラメータ「16」を「user_id」として)を実行して、機能するかどうかを確認する必要があります。
そうでない場合は、バインドされた変数に問題があると思います$user_id
。の出力を教えていただけますvar_dump($user_id)
か?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加