jemand anders
Erfahrenes Mitglied
Hallo,
vielleicht weiß jemand Rat bzgl. des Nullwert-Problems (s. u.)
Gruß
--------
vielleicht weiß jemand Rat bzgl. des Nullwert-Problems (s. u.)
Gruß
--------
Code:
select * from mytable;
+----+------+------+
| id | c1 | c2 |
+----+------+------+
| 1 | NULL | X |
| 2 | A | y |
+----+------+------+
Eine Anwendung Anwendung hat die Tabelle aufgerufen. c2 wird geändert. Alle Änderungen sollen gespeichert werden
$v1 = mysqli_real_escape_string($connect, $_POST["v1"]);
$v2 = mysqli_real_escape_string($connect, $_POST["v2"]);
$query = "UPDATE mytable SET ".$_POST["c1"]."= ' ".$v1." ' , ".$_POST["c2"]."= ' ".$v2." ' WHERE id = '".$_POST["id"]."'";
Problem: Mysql interpretiert '' als Wert und nicht als null, d. h. aus dem bisherigen Nullwert c1 wird durch die beiden Hochkommata ('') ein Wert, der zudem auch nicht in der FK-Tabelle enthalten ist.
Wie ist die übliche Vorgehensweise in solchen Fällen?
PS: Ich habe es jetzt so gelöst:
function checkNullwert($wert) {
if ($wert === "") {
return ("null");
} else {
return ("'" . $wert . "'");
}
}
$query = "UPDATE mytable SET ".$_POST["c1"]."= ' ".checkNullwert($v1)." ' , ".$_POST["c2"]."= ' ".checkNullwert($v2)." ' WHERE id = '".$_POST["id"]."'";
---------------
drop table mytable;
drop table myfk;
create table myfk (a varchar(1) primary key);
insert into myfk values ("A"),("B");
create table mytable (id int(2)not null auto_increment unique primary key, c1 varchar(1), c2 varchar(1),
constraint fk_myfk foreign key (c1) references myfk (a) on delete cascade on update restrict);
insert into mytable (c2) values ("X");
insert into mytable (c1,c2) values ("A","y");
Zuletzt bearbeitet: