cómo pasar un valor nulo a un campo de key externa?

Tengo 2 tablas:

university :

 university_id(pk) | university_name 

y user :

 uid | name | university_id(fk) 

¿Cómo mantener university_id NULL en la tabla de usuario?

Estoy escribiendo solo 1 consulta, mi consulta es:

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

Aquí $university_id puede ser nulo desde el front end.

university table university será establecida por mí por defecto.

En la interfaz, el estudiante seleccionará el nombre de la universidad, de acuerdo con que university_id pasará a user tabla de user , pero si el estudiante no está seleccionando ningún nombre de universidad, entonces debe pasar un valor nulo a la tabla de user para el campo university_id .

Simplemente permita que la columna university_id del user de la tabla permita el valor NULL para que pueda save nulos .

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

ACTUALIZACIÓN 1

basado en tu comentario, deberías estar insertando NULL y no '' .

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

ACTUALIZACIÓN 2

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

Como nota al margen, la consulta es vulnerable con SQL Injection si el ( los ) valor ( es ) de las variables provienen del exterior. Por favor, eche un vistazo al artículo a continuación para aprender cómo evitarlo. Al usar PrepanetworkingStatements puede deshacerse del uso de comillas simples alnetworkingedor de los valores.

  • ¿Cómo prevenir la inyección de SQL en PHP?

Supongamos que tengo una key foránea user_id y quiero insert un valor nulo para eso.

enter image description here

La checkbox se debe verificar para insert el valor nulo para la key externa.

Estaba usando MySQL InnoDB e incluso permitía NULL en la columna FK y al usar NULL como pnetworkingeterminado recibía un error. Así que utilicé la syntax SET:

 INSERT INTO (table) SET value1=X... 

Y simplemente no configuro la columna FK.