그래서 여러 테이블에서 행을 삭제하려고합니다. 다음 질문을 살펴 보았지만 아무도 내 문제를 해결하지 못하는 것 같습니다.PHP에서 SQL을 사용하여 여러 테이블에서 삭제
Fatal error: Call to a member function bind_param() on a non-object
여기 내가 새로운 질문을하기 전에 나를 도와 시도에보고 한 몇 가지 질문 : 내가 노력할 상관없이 내가 다음과 같은 오류가 없습니다 계속.
MySQL delete row from multiple tables
Deleting rows from multiple tables in MySQL
기본적으로 내가 무엇을 만들려고 노력하고있어 사용자가 자신의 계정을 삭제할 수있는 기능입니다. 그들의 계정은 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= ?');
?
은 $stmt->bind_param('i', $user_id);
을 사용하여 바인딩됩니다. 여기서 $user_id
은 세션 변수에서 정의됩니다.
관련 테이블의 관련 항목을 삭제하기 위해 DB에서 트리거를 설정하는 것이 더 쉽지는 않습니까? – Jeff
@Jeff 전에는 트리거에 대해 들어 본 적이 없지만 Google에서 찾았을 때 외래 키 제약 조건을 사용해야한다는 https://www.sitepoint.com/database-triggers-events/이 문서가 있습니다. –
쿼리가 실패 했으므로 이유를 찾고 실제 오류를 확인해야합니다. 게시 한 내용은 코드가 충분하지 않으며 어떤 코드가 실행되고 어떻게 수행됩니까? 여기에 다중 쿼리를 수행하려는 것처럼 보입니다. 네가 올린 것을 줘. 에러 리포팅과 mysqli_error ($ conn)가 여기서 사용될 수 있습니다. –