Xataface: df_get_record liefert unerwartet Datensatz zurück

Beitragsdatum 29.07.2023
Letzte Aktualisierung -
Betrifft xataface

Xataface ist ein Framework für MySQL-Datenbanken und ermöglicht es, schnell und relativ einfach eine WebGUI für eine Datenbank zu entwickeln - mit der Möglichkeit Funktionen einzubauen. IT-MÜCKE setzt stark auf Xataface: Suche auf it-muecke.de.

Problem

Ich hatte die Anforderung, bei Anlage eines neuen Datensatzes zu prüfen, ob ein korrespondierender Datensatz in einer anderen Tabelle existiert.

Dazu kann folgende Methode genutzt werden:

$record = df_get_record('table', array('fieldname'=>$fieldvalue));

# table = Tabellenname
# fieldname = Spaltenname der Tabelle
# fieldvalue = eine bestimmte Zeile in der Tabelle definiert durch den Wert in der Spalte fieldname

Hierbei erhält man den ersten passenden Datensatz aus der Datenbank zurück. Allerdings:: ich erhielt auch dann einen Datensatz zurück, wenn fieldvalue leer war.

Meine weitere Abfrage zielte aber darauf ab, leere Datensätze zu erkennen:

$record = df_get_record('table', array('fieldname'=>$fieldvalue));

if (!is_null($record)) {
  // [irgendwas tun, wenn KEIN Datensatz vorhanden ist]
}

Meine Abfrage wurde nie erfüllt, da immer ein Datensatz geliefert wurde, wenn fieldvalue leer war.


Ursache

Der Vergleichsoperator ('fieldname'=>$fieldvalue) ist im Standard so eingerichtet, dass er bei einem leeren fieldvalue den ersten Datensatz zurück liefert.


Lösung

Der Vergleichsoperator muss auf „exakte Übereinstimmung“ umgebaut werden:

$record = df_get_record('table', array('fieldname'=>'='.$fieldvalue));

Also auf: 'fieldname'=>'='.$fieldvalue ändern.

Dadurch wird nur bei exakter Übereinstimmung ein Datensatz geliefert, sonst bleibt er leer.


Quellen:


Ähnliche Themen im blog:
mysql, xataface


zurück