Php 无法添加或更新子行错误
当我试图回复论坛系统上的帖子时,我不断收到此错误:Php 无法添加或更新子行错误,php,mysql,database-design,Php,Mysql,Database Design,当我试图回复论坛系统上的帖子时,我不断收到此错误: Cannot add or update a child row: a foreign key constraint fails ('forum'.'posts', CONSTRAINT 'posts_ibfk_2' FOREIGN KEY ('post_by') REFERENCES 'users' ('user_id') ON UPDATE CASCADE). 我知道这个问题可能已经得到了回答,但对于我的DB模式,我想获得更多关于我遗漏
Cannot add or update a child row: a foreign key constraint fails ('forum'.'posts', CONSTRAINT 'posts_ibfk_2' FOREIGN KEY ('post_by') REFERENCES 'users' ('user_id')
ON UPDATE CASCADE).
我知道这个问题可能已经得到了回答,但对于我的DB模式,我想获得更多关于我遗漏了什么的信息。下面是我的用户和POST表的DB模式:
用户表:
注意:用户名是我的主键
员额表:
注意:post_by是引用用户表中用户id的FK
我非常确定我的模式不正确或有问题,我们将非常感谢您的帮助。为什么要在更新时级联?当你想回复一篇文章时,你的SQL语句是什么样子的?下面是回复一篇文章时的SQL语句:$SQL=INSERT INTO postspost_内容、post_日期、post_主题、post_值。mysqli_real_escape_字符串$dbc、$post['reply_content'],现在,'.mysqli_real_escape_字符串$dbc、$GET['id',$SESSION['user_id'.];我只能猜测:可能会话包含的值不在users表中。尝试使用硬编码的用户id进行测试。如果没有发生错误,则应检查会话值。因为您希望整数作为值,所以应该键入cast。顺便说一句:post_主题不是一个整数列吗?Thx我会试试看。因为正如您所说,如果会话为null或包含一个不在users表中的值,那么就会出现问题。我将对其进行硬编码,并尝试在页面上显示$\u会话[user\u id'],以查看登录后它是否真的包含某些内容。谢谢。谢谢你的建议,它解决了我的问题。我发现$\u会话['user\u id']有问题。我测试了它,以确保登录后它包含预期值。再次感谢。
user_id int(8)
user_name varchar(30)
user_pass varchar(255)
user_email varchar(255)
user_date datetime
user_level int(8)
post_id int(8)
post_content text
post_date datetime
post_topic int(8)
post_by int(8)