2016-12-07 83 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存在,所以无法添加上面记录