我知道存在与听起来相同的答案的问题,但我已经检查过它们,并且我无法回答我的问题。如何在添加记录之前检查其他表中是否存在外键
我有一个食谱表,里面有“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? –