Ich habe 2 Tische:
university
:
university_id(p.k) | university_name
und user
:
uid | name | university_id(f.k)
Wie kann university_id
NULLin der Benutzertabelle bleiben?
Ich schreibe nur eine Abfrage, meine Abfrage lautet:
INSERT INTO user (name, university_id) VALUES ($name, $university_id);
Hier kann $university_id
vom Frontend aus null sein.
university
table wird von mir standardmäßig gesetzt.
Im Frontend wählt der Student den Namen der Universität aus. Danach wird university_id
an user
-Tabelle übergeben. Wenn der Student jedoch keinen Universitätsnamen auswählt, sollte der Wert user
für das university_id
-Feld einen Nullwert übergeben.
Erlauben Sie der Spalte university_id
der Tabelle user
nur den NULL
-Wert, damit Sie nulls speichern können.
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
basierend auf Ihrem Kommentar sollten Sie NULL
und nicht ''
einfügen.
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);
Als Nebenbemerkung ist die Abfrage mit SQL Injection
anfällig, wenn der Wert (s) der Variablen von außen stammt. Bitte lesen Sie den Artikel unten, um zu erfahren, wie Sie dies verhindern können. Mit PreparedStatements
können Sie die Verwendung von einfachen Anführungszeichen um Werte beseitigen.
Angenommen, ich habe einen Fremdschlüssel user_id
und ich möchte einen Nullwert dafür einfügen.
Das Kontrollkästchen muss aktiviert sein, um einen Nullwert für den Fremdschlüssel einzufügen.
Ich benutzte MySQL InnoDB und erlaubte sogar NULL in der FK-Spalte und verwendete NULL als Standard. Ich erhielt eine Fehlermeldung ..__ Also verwendete ich die SET-Syntax:
INSERT INTO (table) SET value1=X...
Und ich setze die FK-Säule einfach nicht ein.