嗨,大家好即時通訊編寫這個新的問題,因爲在閱讀幾乎所有相關問題後,我仍然不明白爲什麼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)而不是連接你的查詢。特別是因爲你沒有逃避用戶輸入! –
向我們展示這兩個表的數據庫模式。 –
這不是問題,因爲這將是一個不會上網的項目,所以它不會出現安全問題 –