我知道存在與聽起來相同的答案的問題,但我已經檢查過它們,並且我無法回答我的問題。如何在添加記錄之前檢查其他表中是否存在外鍵
我有一個食譜表,裏面有「chef_id」和「category_id」列。 然後,我有一個廚師表,帶有「id」和「name」列,以及類別表,還有「id」和「name」列。
當我插入一個新配方,我必須添加chef_id和category_id,它們需要已經存在,否則,它應該告訴我添加食譜前添加廚師和新類別。
如何以及在哪裏檢查?我正在使用SQL PDO。這是我到目前爲止有:
的functions.php
function add_recipe($name =':name',
$categories_id=':categories_id',
$chef_id=':chef_id') {
include 'db_connection.php';
try {
$sql = "INSERT INTO recipes(name, categories_id, chef_id) "
. "VALUES (:name, :categories_id, :chef_id)";
if(chef_id and category_id exist) {
then execute the query;
}
$results = $conn->prepare($sql);
$results->bindParam(':name', $name, PDO::PARAM_STR, 100);
$results->bindParam(':categories_id', $categories_id, PDO::PARAM_INT);
$results->bindParam(':chef_id', $chef_id, PDO::PARAM_INT);
if($results->execute()) {
echo '1 row has been inserted';
}
$conn = null;
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage() . '<br />';
return false;
}
return true;
}
我能想到的是正確的唯一的一點是SQL CHECK約束....但我希望不是這樣因爲我發現安靜很難理解它是如何工作的...
謝謝!
只要做到從table_name的其中id =一個'選擇素數(ID):在其他表id',看是否你會得到任何結果,然後再進行插入。 –
但是,如果在這一點上他們的對應行可能不存在,你如何使用'chef'和'category' ids? –