Prüfen ob MYSQL Abfrage LEER oder 0
Marco
- php
Moinsen,
wie kann ich mit einer If-Abfrage prüfen, ob die MYSQL-Abfrage Leer oder "0" ist???
Beispiel:
if($ergebnis == 0)
{
$test = 'ist true';
}
else
{
$test = 'ist false';
}
Gibt TRUE zurück, selbst wenn die MYSQL-Abfrage Leer ist!
Ich möchte gerne von Leer und "0" unterscheiden.
Mit empty() oder isset() funktioniert es leider nicht.
Vielleicht jemand eine Idee?
Vielen Dank
MfG
Marco
Bei einem leeren Ergebnis kommt keine Ergebniszeile zurück. Bei 0 gibt es eine Zeile die 0 enthält.
Was in deinem Fall $ergebnis sein könnte, weiß aufgrund deiner (nicht) Beschreibung aber wirklich keiner.
Habe das Problem mit
if (empty($var) && $var!==0)
gelöst.
Danke
Hello,
Habe das Problem mit
if (empty($var) && $var!==0)
gelöst.
PHP kennt auch die Funktion is_null().
http://de2.php.net/manual/en/function.is-null.php
Ich war mir jetzt aber auf die Schnelle nicht sicher, ob beim Tranfer MySQL->PHP das NULL eventuell verloren geht, weil eine Stringumwandlung stattfindet. Aber wahrscheinlich bringe ich das jetzt nur durcheinander mit HTML->PHP, denn sonst wäre ja die Funktion
http://de2.php.net/manual/en/function.mysql-field-type.php unsinnig...
Das Pendant für mysqli finde ich leider nicht :-(
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Tach!
Habe das Problem mit
if (empty($var) && $var!==0)
gelöst.
Da bin ich skeptisch. Zumal nun plötzlich eine Variable $var auftaucht, deren Herkunft du nicht angibst. Auch im Ausgangsposting ist nicht wirklich klar, was $ergebnis sein soll. Ist es das, was mysql_query() zurückliefert? Nun dann wäre das entweder false oder eine Ressourcen-Kennung, die die Fetchfunktionen benötigen. Eine leere Menge erkennt man nun daran, dass die verwendete Fetchfunktion zu dieser Ressourcen-Kennung sofort false zurückliefert, anderenfalls einen Datensatz.
dedlfix.
Hello dedlfix,
Habe das Problem mit
if (empty($var) && $var!==0)
gelöst.Da bin ich skeptisch. Zumal nun plötzlich eine Variable $var auftaucht, deren Herkunft du nicht angibst. Auch im Ausgangsposting ist nicht wirklich klar, was $ergebnis sein soll. Ist es das, was mysql_query() zurückliefert? Nun dann wäre das entweder false oder eine Ressourcen-Kennung, die die Fetchfunktionen benötigen. Eine leere Menge erkennt man nun daran, dass die verwendete Fetchfunktion zu dieser Ressourcen-Kennung sofort false zurückliefert, anderenfalls einen Datensatz.
Ich habe Marco so verstanden, dass in einem Feld eines Ergebnisdatensatzes entweder NULL, 0 oder etwas <> 0 steht, er also z.B. einen TinyInt für die "Logical"-Spalte benutzt hat und vergessen hat, NULL zu verbieten und einen Default (z. B. 0) einzustellen.
Da sollte er doch mit is_null() aus der PHP-Funktionsbibliothek
http://de1.php.net/manual/en/function.is-null.php
zum Erfolg kommen.
Ich war mir nur nicht sicher, ob der Transfer von MySQL nach PHP wie vorgesehen funktioniert. Aber der Fehler ist wohl schon lange behoben. Das Array-Element im Ergebnisdatensatz nimmt ordnungsgemäß den Wert NULL an und verschwindet nicht mehr einfach aus dem Array.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
wie kann ich mit einer If-Abfrage prüfen, ob die MYSQL-Abfrage Leer oder "0" ist???
Beispiel:
if($ergebnis == 0)
{
$test = 'ist true';
}
else
{
$test = 'ist false';
}Gibt TRUE zurück, selbst wenn die MYSQL-Abfrage Leer ist!
Ich möchte gerne von Leer und "0" unterscheiden.
Mit empty() oder isset() funktioniert es leider nicht.
Da ist es auch schon zu spät.
Du könntest z.B. bereits im Query auf "is_null()" prüfen
http://dev.mysql.com/doc/refman/5.1/en/non-typed-operators.html
http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html#operator_is-null
Da kannst Du dann bereits in der Abfrage mittels if() und ifnull()
http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if
http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_ifnull
eine berechnete Spalte ausgeben, in der "NULL", "TRUE" oder "FALSE" als Ergebnis zurückgeben wird. Das sind dann aber im Resultset nur Literale.
Da Du ja weißt, dass Du sort keinen Text erwartest, kannst Du dir dieses Ergebnis in PHP dann wieder zurückwandeln mit einer kleinen Funktion, die ein "PHP-echtes" NULL, TRUE oder FALSE liefert.
select if(isnull(enabled
, 'NULL', if(enabled
= 0, 'FALSE', 'TRUE')) as status
from table
...
So ungefähr.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg