2016-12-07 81 views
0

我有這個MySQL代碼嘗試提交帖子到論壇的錯誤。外鍵MySQL錯誤與帖子

的錯誤是:

Cannot add or update a child row: a foreign key constraint fails(`[My Database Name]`.`posts`, CONSTRAINT `posts_ibfk_2` FOREIGN KEY (`post_by`) REFERENCES `users` (`id`) ON UPDATE CASCADE) 

的代碼是:

  $username = $_SESSION['username']; 
      $subid = mysqli_insert_id($con); 
      $usablesubid = mysqli_real_escape_string($con,$subid); 
      $postcontent = mysqli_real_escape_string($con,$_POST['post_content']); 
      $usableusername = mysqli_real_escape_string($con,$username); 
      $sql = "INSERT INTO `posts`(post_id, post_content, post_date, post_sub, post_by)VALUES(NULL, '$postcontent', NOW(), '$usablesubid', '$usableusername')"; 
      $result = mysqli_query($con,$sql);     
      if(!$result) 
      { 
       echo 'An error occured while inserting your post. Please try again later.' . mysqli_error($con); 
+0

什麼'$ username' /'$ _SESSION ['username']'包含?我想這不是一個現有的用戶ID。 – jeroen

+0

它提取用戶用戶名本身,它存儲在登錄頁面中的會話變量用戶名中;我知道這是有效的,因爲我用它來列出誰在我的標題中登錄。 –

+0

也許,但用戶標識不一定與用戶名相同。對於你的外鍵你需要'users.id',我會認爲這是一個整數,而不是你在頁面頂部顯示的用戶名。 – jeroen

回答

0

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails這意味着,你正在嘗試將一行添加到您的帖子表對於沒有匹配的行post_by存在於用戶表中。

詳情check here

0

不能添加或更新子行,外鍵約束失敗

的錯誤是自我解釋。這是因爲你的代碼違反了外鍵的父子關係。

例:

table1: tbl_emp 
    id emp_name 
    1  Ajay 

table2: here emp_id is a reference to id of tbl_emp 
    id emp_id emp_name 
    1  2   Ajay 

在這種情況下,沒有父條目父表ID-> 2存在,所以無法添加上面記錄