フォーラムに投稿を投稿しようとしているこの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);
'$ username' /' $ _SESSIONは何['username'] 'contains?私はそれが既存のユーザーIDではないと思います。 – jeroen
ログインページのセッション変数のユーザ名に格納されているユーザのユーザ名を取得します。私はこれが私のヘッダーに誰がログオンしているのかを列挙するのに使っているので、これがうまくいくことは分かっています –
おそらく、ユーザーIDは必ずしもユーザー名と同じではありません。あなたの外部キーには 'users.id'が必要です。これは整数であり、ページ上部に表示されるユーザー名ではないと思います。 – jeroen