php/mysql:无法添加或更新子行

php/mysql:无法添加或更新子行,php,mysql,Php,Mysql,我有一个名为project_beta的数据库,其中包含以下表格:offre、categorieOffre和fourniseur -fournisseur (idFournisseur, nomFournisseur) -offre (idOffre, nomOffre, #idFournisseur, #idCatOffre) -categorie_offre (idCatOffre, nomCatOffre, #idOffre); 当我这样做的时候 在offre值中插入“.$nomOffre

我有一个名为project_beta的数据库,其中包含以下表格:offre、categorieOffre和fourniseur

-fournisseur (idFournisseur, nomFournisseur)
-offre (idOffre, nomOffre, #idFournisseur, #idCatOffre)
-categorie_offre (idCatOffre, nomCatOffre, #idOffre);
当我这样做的时候

在offre值中插入“.$nomOffre.”、“.$IDfornisseur.”、“idCatOffre” 它显示此错误:

无法添加或更新子行:外键约束失败project\u beta.offre、约束offre\u ibfk\u 4外键idCatOffre引用分类\u offre idCatOffre


我怎样才能修好它

存在外键约束以确保数据完整性得到保留。如果此约束失败,那是因为您试图使用的类别id不包含在category_offre表中。

我看到了一些奇怪的事情

您正在idOffre字段中插入一个空值。对于一个id来说,这是一个非常奇怪的值。通常我希望这个id由数据库自动生成,您不应该在那里插入任何内容。 对于第四个字段,您保留文本模式,但不使用串联。 我建议agains将变量的名称以开头。更进一步,你不再使用那个角色了。 在双引号内,php替换变量,因此不必连接 我希望IDfornisseur和idCatOffre也是数字,所以它们的值不应该在insert语句中单独引用。 另外,请确保在相关表中预先存在IDFourniseur和IDCatOffer的值

只是胡乱猜测。。。你不应该这样做吗

$query = "insert into offre(nomOffre, idFournisseur, idCatOffre) values ($nomOffre,$idFournisseur,$idCatOffre)";

您是否可能在$IDCATOFFE中缺少$on?或者IDCATOFFE不在类别表中。顺便说一句,您的外键有问题。删除类别表中指向offre table IDOFFRET的外键$i在此处遗漏了它:。表格CATEGORE不是空的,包含5个以上的元素,因此,我想知道是否有可能进行更新或手动设置idCatOffre,因为在phpmyadmin中,我已经进行了更新,并且我有可能在idOffre中进行选择。为了清除$nomOffre,我从公式中获得它。我按照你展示的做了,但是我得到了:你的SQL语法有一个错误;查看与MySQL服务器版本相对应的手册,了解我这边第1Typo行附近使用的正确语法:$nomOffre附近的单引号不应该出现。我已经编辑了我的答案。我得到了解决方案,我在插入sql请求之后完成了更新sql请求。谢谢每一个人。