一尘不染

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

mysql

我有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字段。


阅读 311

收藏
2020-05-17

共1个答案

一尘不染

只允许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您可以摆脱在值周围使用单引号的麻烦。

2020-05-17