当前位置: 首页 > 面试题库 >

如何将空值传递给外键字段?

曾瀚昂
2023-03-14
问题内容

我有2张桌子:

university

university_id(p.k) | university_name

user

uid | name | university_id(f.k)

如何在用户表中保持university_id NULL

我只写1条查询,我的查询是:

INSERT INTO user (name, university_id) VALUES ($name, $university_id);

这里$university_id可以从前端空。

university 表格将由我默认设置。

在前端,学生将选择大学名称,根据该名称university_id将传递到user表格,但是如果学生未选择任何大学名称,则应将null值传递给user表格中的university_id字段。


问题答案:

只允许university_id表的一列user允许NULL值,这样您就可以保存 null

CREATE TABLE user
(
   uid INT NOT NULL,
   Name VARCHAR(30) NOT NULL, 
   university_ID INT NULL,    -- <<== this will allow field to accept NULL
   CONSTRAINT user_fk FOREIGN KEY (university_ID)
       REFERENCES university(university_ID)
)

更新1

根据您的评论,您应该插入NULL而不是''

insert into user (name,university_id) values ('harjeet', NULL)

更新2

$university_id = !empty($university_id) ? "'$university_id'" : "NULL";
insert into user (name,university_id) values ('harjeet', $university_id);

作为一个旁注,查询是脆弱的SQL Injection,如果值( 小号
变量)从外面走了进来。请查看下面的文章,以了解如何防止它。通过使用,PreparedStatements您可以摆脱在值周围使用单引号的麻烦。

  • 如何 防止 PHP中的 SQL注入


 类似资料:
  • 问题内容: 在我的ASP.NET MVC应用程序中,我希望用户将值添加到文本框中,然后按Ajax.ActionLink。我想做这样的事情: Ajax.ActionLink(“ Go”,“ Action”,“ Controller”,新的{value = textbox1.value}) 还是我还能如何使此文本框值返回到我的操作?jQuery的? 问题答案: 您可以使用AJAX $ .get方法运行

  • 问题内容: Docker 1.9允许将参数传递给dockerfile。参见链接:https : //docs.docker.com/engine/reference/builder/#arg 我该如何在ENTRYPOINT指令中传递相同的药品? 我的dockerfile有 ARG $ Version = 3.1 ENTRYPOINT /tmp/folder-$Version/sample.sh开始

  • 因此,在这里我将basePackages硬编码为“com.example”。这不是我想要的。我想通过命令行参数从终端运行应用程序时接收包名。有没有一种方法可以将命令行参数传递给应用程序,并使用我在BasePackages中接收到的参数?提前致谢

  • 问题内容: 假设我有一些功能,: 现在,如果我有一个字典,例如,我可以调用并打印结果。 但是,假设我有一本字典。如果我打电话给我 很公平。但是,无论如何,在其定义或调用中,是否要告诉Python仅忽略不是参数名称的任何键?最好是一种可以指定默认值的方法。 问题答案: 作为@Bas发布答案的扩展,我建议将kwargs参数(可变长度关键字参数)添加为函数的第二个参数 这一定足以满足 只忽略不是参数名称

  • 这个网页让我相信我可以将一个空字符串传递给,以关闭图形的y记号。 但是,当我尝试这样做时,我得到以下错误: 怎么回事?如果这种关闭y型刻度的方法是不正确的,那么正确的方法是什么?

  • 我一直试图从一个对象数组填充一个JTable,但是什么也没有显示出来。下面是填充表的方法代码。system.out.println使我能够检查数据是否正确传递,变量中是否有值。这是来自界面的: 即使来自接口的数据显示在控制台中,也只显示表头。如果有人能解决如何正确地将数据值传递给JTable,那就太棒了!