在PHP中设置外键check = 0以进行删除

时间:2017-04-10 12:18:31

标签: php mysql sql

我试图通过使用外键从连接到另一个表的表中删除,当我删除用户时,我希望另一个表中的关联数据也被删除。但是我总是收到错误。我有删除用户的代码:

  public function delete_user($id){

    $stmt = $this->conn->prepare("SET foreign_key_checks=0");

     $stmt = $this->conn->prepare("DELETE FROM tbl_users WHERE userID=:id");
     $stmt->bindparam(":id",$id);
     $stmt->execute();
     return $stmt;

   }

如果用户没有创建任何文件,它们将被删除,因为它们未连接到另一个表。但是如果用户创建了一个文件,我会收到这个错误:

  

致命错误:未捕获的异常' PDOException'与消息   ' SQLSTATE [23000]:完整性约束违规:1451无法删除   或更新父行:外键约束失败   (freshbursttbl_documents,CONSTRAINT tbl_users_userID_fk   外键(userID)参考tbl_usersuserID))'在   C:\ xampp \ htdocs \ IP3-GROUP13 \ class.user.php:198堆栈跟踪:

#0 C:\xampp\htdocs\IP3-GROUP13\class.user.php(198): PDOStatement->execute()
#1 C:\xampp\htdocs\IP3-GROUP13\deleteUser.php(19): USER->delete_user('3')
#2 {main} thrown in C:\xampp\htdocs\IP3-GROUP13\class.user.php on line 198

Freshburst是数据库的名称,tbl_users包含用户信息,tbl_documents包含他们创建的文档。

提前致谢。

0 个答案:

没有答案