klaus: php/mysql WHERE

moin!

ich habe folgende mysql_query:

$out  = mysql_query("SELECT * FROM ".$table_prefix."pictures WHERE name='".$name."' AND thumbnail=''") or die (mysql_error());

also ich möchte damit erreichen dass eben die datensätze ausgewählt werden in denen name=$name ist und thumbnail="" (also leer) ... irgendwie funktioniert das aber nicht. ich bekomme keinen fehler aber ich habe das gefühl, dass thumbnail='' nicht richtig ist um ein feld zu suchen das leer ist. villeicht kann ja jemand helfen ...

danke, klaus

  1. Hallo,
    evt. meinst du thumbmail??

    Aber so ist es eigentlich richtig. Kannst dir ja eine kleine Tabelle mit Beispieldaten anlegen und dir dann die Ausgabe anschauen.

    MFG
    Andavos

  2. Hi,

    es gibt bei Datenbanken - na ja - sagen wir mal zwei verschiedene Varianten von leer. Zum einen wäre da die "hier steht was drin, nämlich nichts", zum anderen die "hiermit hat sich noch niemand beschäftigt oder hat den Wert auf unbekannt gesetzt" Variante.
    Die erste prüfst du für Zeichenketten einigermaßen korrekt, also mit =''. Die andere Variante sind die sogenannten NULL-Werte, die prüfst du mit "thumbnail IS NULL" ab (oder eben IS NOT NULL).

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Hello,

      Die erste prüfst du für Zeichenketten einigermaßen korrekt, also mit =''. Die andere Variante sind die sogenannten NULL-Werte, die prüfst du mit "thumbnail IS NULL" ab (oder eben IS NOT NULL).

      Manche Datenbanken lösen sogar einen fehler aus, wenn man nicht erst auf NULL prüft und dann auf Inhalt. Manche lassen diese Fehlermeldung bei einem Versionssprung auch einfach unter den Tisch fallen (ACCESS).

      Wenn ein Feld schon drei Zustände haben kann:

      • nicht benutzt
      • zugewiesener Inhalt = nichts
      • zugewiesener Inhalt = Wert

      dann sollte man die auch konsistent berücksichtigen.

      Das ist bei PHP doch ähnlich:

      if(isset($variable) and $variable == 'wert')

      Dabei sollte man aber wissen, ob die verwendete (Abfrage-)Sprache auch die verkürzte boolesche Abfrage verwendet, oder aber die vollständige. Im zweiten Fall muss man auch noch substantiiert schachteln!

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau