我有两张桌子:

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桌将由我默认设置.

在前端,学生将 Select 大学名称,根据university_id将传递到user表,但如果学生没有 Select 任何大学名称,则应将空值传递到user表的university_id字段.

推荐答案

只需允许表user的第university_id列允许NULL值,就可以保存nulls.

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)
)

UPDATE 1

根据你的 comments ,你应该插入NULL而不是''.

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

UPDATE 2

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

另外,如果变量的值(s)来自外部,则查询容易受到SQL Injection的攻击.请看下面的文章,了解如何预防它.通过使用PreparedStatements,您可以避免使用单引号将值引起来.

Database相关问答推荐

为Postgres数据库字段创建复合索引

KUST查询指定时间跨度内里程表&值的差值,并将其滚动到0

postgres 索引扫描的启动成本(postgresql 书的内部 struct )

将数据库/后端添加到 android 应用程序

MySQL解释更新

为什么面向对象的数据库还没有成功?

有没有办法为 2 个具有不同包名称的应用程序提供 1 个 Firebase 数据库?

su postgres:Sorry?

Laravel 5 从 URL 获取 ID

我应该为我创建的新创建的 PostgreSQL 模式使用什么正确的文件扩展名?

我可以在 mysql 中的 select 语句上启动触发器吗?

C# 连接到数据库并列出数据库

如何将数据库从一台计算机复制到另一台计算机?

具有多列的单个固定表与灵活的抽象表

SQL 中的 CAST 和 CONVERT 是否相同?

使用批处理文件执行一组 SQL 查询?

如何解析来自 Google 快讯的数据?

复制没有 LOCK 权限的 postgres 数据库

使用 oracle sql developer 从一个数据库复制到另一个数据库 - 连接失败

在两列之间 Select 最近的日期