[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • SQL-Fehler bei Abruf eines Wertes mittels getValue(), obwohl Abfrage korrekt
Seite 1 von 1

SQL-Fehler bei Abruf eines Wertes mittels getValue(), obwohl Abfrage korrekt

Verfasst: 19. Feb 2019, 14:19
von iceman-fx
Hallo Leute,

ich möchte einfach nur einen Wert aus der Datenbank auslesen, erhalte aber in REX5 neuerdings immer einen SQL-Fehler, wenn der übergebene Parameter 0 ist und damit kein Eintrag in der DB gefunden wurde.

Warning: Field "rex_1520_reflist_types.title" does not exist in result! in /home/www/web88/html/sub_homepage/redaxo/src/core/lib/sql/sql.php on line 675

Code: Alles auswählen

		$service = $db->getValue('id_service');			//hier kommt ein ID-Wert, z.B. "0", raus
			$tmp = rex_sql::factory();
			$tmp->setQuery("SELECT * FROM ".rex::getTable('1520_reflist_services')." WHERE id = '".$service."' LIMIT 0,1");
		$service = $tmp->getValue('title');
Setze ich diese SQL-Abfrage im phpMyAdmin ab ist alles ok. Es kommt nur ein leeres Resultat zurück.
Aber beim Zugriff über getValue allerdings, wird diese Fehlermeldung geworfen.

Die Frage ist ... warum, da ein leeres Resultat ja eigentlich kein Fehler ist?
Und dann ist noch die Frage, wie ich dies sonst abprüfen könnte, damit dieser Fehler nicht geworfen wird?

Getestet mit Rex 5.6.5.

Vielleicht kann mir da einer einen Tipp geben.

PS: wenn bei $service = $db->getValue('id_service'); ein Wert größer 0 raus kommt, ist alles ok.

Re: SQL-Fehler bei Abruf eines Wertes mittels getValue(), obwohl Abfrage korrekt

Verfasst: 20. Feb 2019, 20:20
von runstop64
Der Vergleich hinkt etwas. Eine MySQL-Abfrage ist ja nicht identisch mit der rex_sql Klasse. Und rex_sql wirft halt einen Fehler, wenn die Spalte in der Rückgabe nicht existiert.
Du kannst mit

Code: Alles auswählen

$sql->hasValue('title')
prüfen, ob die Spalte existiert, bevor du sie aufrufst.
Oder du prüfst vor der Abfrage ob die ID größer 0 ist. ID = 0 muss man ja gar nicht an die Abfrage übergeben.