php - 在表之间链接外键
问题描述
我有两张桌子:TEMA e SOTTOTEMA。在 TEMA 中,我有作为主键的 IDtema,它是自动递增的。我希望它是 sottotema 表中的外键,我在 phpmyadmin 中写了我的数据库,
ALTER TABLE sottotema ADD FOREIGN KEY (IDtema) REFERENCES tema (IDtema)
它不会给我错误,但外键不起作用。我在选择选项中预定义了主题,根据您选择的主题,您可以自己插入子主题。
<select id = "tema" name = "tema">
<option hidden></option>
<option value = "Animali"> Animali</option>
<option value = "Cucina"> Cucina </option>
<option value = "Sport"> Sport </option>
<option value = "Musica"> Musica </option>
<option value = "Cinema"> Cinema </option>
<option value = "Letteratura"> Letteratura </option>
</select></br>
<div id = "sottotema" style = "display:none">
<p id = "titolosottotema"> Sottotema </p>
<input type = "text" placeholder="Scrivi un sottotema" id = "st" name = "st"/>
</div>
所有这些显然都在 FORM 中,除了在 sottotema 表中插入 IDtema 作为外键外,一切正常。
我只报告数据库中的数据输入查询,但在我的 php 代码中还有其他内容,包括与数据库的连接
<?php
$sottotema = $_POST['st'];
$query = "INSERT INTO sottotemi (nomeSottotema) VALUES ('$sottotema')";
$result = mysqli_query($mysqli, $query);
if (!$result){
echo "errore 1";
} else {
$query2 = "INSERT INTO blog (titoloBlog,nomeSottotema,nomeUtente,sfondo, font, colorefont) VALUES ('$titoloblog','$sottotema',(SELECT nomeUtente FROM utentiregistrati WHERE nomeUtente = '$nomeutente'),'$sfondo','$font','$colore');";
$result2 = mysqli_query($mysqli, $query2);
if(!$result2){
echo 'errore 2';
}
?>
在数据库中,我已经输入了我的预定义主题,因此主键 idtema 已经与特定主题相关联(例如 1 - Animali 等)。请帮帮我,我很绝望!!!!!!!
解决方案
要使外键起作用,您需要在 INSERT 操作中指定外表标识符,否则该行将是孤立的。而不是您需要INSERT INTO sottotemi (nomeSottotema) VALUES ('$sottotema')
找到外部IDtema
表( ) 版本):tema
INSERT
SELECT
INSERT INTO sottotemi
(nomeSottotema, IDtema)
SELECT
'$sottotema', T.IDtema
FROM tema AS T
WHERE T.nome = '$tema'
推荐阅读
- python - 在 If-Elif-Else 语句中未正确运行的赋值语句
- ansible - 将挂载存储在变量中并注释或禁用交换挂载
- amazon-web-services - 如何按单列对 DynamoDB 表进行排序?
- html - 使用 CSS 定位具有特定类的第二个和倒数第二个元素
- python-3.x - 从 Optional[T] 获取 Python 类型 T 的变量
- python - 放入 fastapi 的方法不起作用/不允许 405 方法
- c++ - UE4 C++ 在 UI 中为同一个角色创建了多个小部件
- discord.py - 创建类别时无法设置覆盖
- javascript - 从文件中读取然后通过调用特定方法执行 Js 代码
- c# - 如何创建一个可以接受许多参数的泛型类