2016-12-07 6 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'] 'contains?私はそれが既存のユーザーIDではないと思います。 – jeroen

+0

ログインページのセッション変数のユーザ名に格納されているユーザのユーザ名を取得します。私はこれが私のヘッダーに誰がログオンしているのかを列挙するのに使っているので、これがうまくいくことは分かっています –

+0

おそらく、ユーザーIDは必ずしもユーザー名と同じではありません。あなたの外部キーには '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のために存在する