嗨,大家好即时通讯编写这个新的问题,因为在阅读几乎所有相关问题后,我仍然不明白为什么MySQL会触发此错误:问题与插入到一个表中有一个外键
Cannot add or update a child row: a foreign key constraint fails (progetto_pal.corso, CONSTRAINT corso_ibfk_1 FOREIGN KEY (CodiceFiscale_IstrCorso) REFERENCES istruttore (CodiceFiscale))
阅读所有关于这个错误我知道,可由于数据类型的触发器,因为我去插入元素没有通过检查,因为我不能在主存在表。
现在我已经检查过,我去插入表corso elemnet:类型是相同的,元素也存在于表istruttore。 直到现在我才知道,就好像我要插入到列CodiceFiscale_IstrCorso中的元素不匹配表istruttore中的任何行。
所以我能做些什么来了解什么是错误的工作在phpmyadmin工作的数据库和插入即时通讯使用简单的形式在PHP现在我张贴的表单的SQL部分的代码。
<?php
include('../connDB.php');
class corso{
public $cc;
public $des;
public $cfi;
function __construct ($cc, $des,$cfi){
$this->cc=$cc;
$this->des=$des;
$this->cfi=$cfi;
}
function insRec(){
global $mysqli;
$query = "insert into Corso (Codice_Corso, Descrizione, CodiceFiscale_IstrCorso)
values ('$this->cc', '$this->des', '$this->cfi')";
if (!$mysqli->query($query)) {
die($mysqli->error);
} else {
header("location: ../insert.php");
}
}
}
$operaz=(isset($_POST) && isset($_POST["operaz"]) ? $_POST["operaz"] : "");
if($operaz=='insert'){
$cc=(isset($_POST) && isset($_POST["ccC4"]) ? $_POST["ccC4"] : "");
$des=(isset($_POST) && isset($_POST["desC4"]) ? $_POST["desC4"] : "");
$cfi=(isset($_POST) && isset($_POST["cfiC4"]) ? $_POST["cfiC4"] : "");
$checkIns = new corso($cc, $des, $cfi);
$checkIns->insRec();
}
?>
你是为[SQL敞开注射](http://php.net/manual/en/security.database.sql-injection.php),应该真的使用[Prepared Statements](http://php.net/manual/en/m ysqli.quickstart.prepared-statements.php)而不是连接你的查询。特别是因为你没有逃避用户输入! –
向我们展示这两个表的数据库模式。 –
这不是问题,因为这将是一个不会上网的项目,所以它不会出现安全问题 –