Patrick: Variable mit Datenbankspalte überprüfen

Hallo,
ich möchte eine Variable, z.B. '$wert' mit der MYSQL-DB-Spalte 'ID' vergleichen.
Wenn der Wert der Variablen '$wert' nicht in der Spalte 'ID' enhalten ist, soll das PHP-Script 'sterben' --> if (....) {die();}

Bsp:

Variable:
$wert = 11111

Datenbank:
ID        name ...
11110     xyz
11111  <-- Wert enthalten, Script wird fortgesetzt
11112     ghi

Gruß Patrick

  1. Hallo Patrick!

    [...] Variable, z.B. '$wert' mit der MYSQL-DB-Spalte 'ID' vergleichen.
    Variable:
    $wert = 11111

    Datenbank:
    ID        name ...
    11110     xyz
    11111  <-- Wert enthalten, Script wird fortgesetzt
    11112     ghi

    Du solltest vielleicht die Datensätze erstmal selektieren, in nen Array packen, und dann kannst du vergleichen.

    Und zwar ganz einfach:
    if($db_array['ID'] == $wert)
      {
        // blablub
      }
    else
      {
        // stirb, oder so.
        die();
      }

    Also, erstmal im PHP-Manual anschauen, wie man sich Datensätze aus ner Datenbank holt.
    http://php.net/mysql sollte ein guter Einstiegs dazu sein ;)

    MfG
    Götz

    --
    Losung und Lehrtext für Donnerstag, 13. November 2003
    Ein Engel rührte Elia an und sprach zu ihm: Steh auf und iss! Und er stand auf und aß und trank und ging durch die Kraft der Speise vierzig Tage und vierzig Nächte bis zum Berge Gottes. (1.Könige 19,5.8)
    Jesus sprach zu ihnen: Gottes Brot ist das, das vom Himmel kommt und gibt der Welt das Leben. Da sprachen sie zu ihm: Herr, gib uns allezeit solches Brot. (Johannes 6,33-34)
    (http://www.losungen.de/heute.php3)
  2. Hallo,

    ich möchte eine Variable, z.B. '$wert' mit der MYSQL-DB-Spalte 'ID' vergleichen.
    Wenn der Wert der Variablen '$wert' nicht in der Spalte 'ID' enhalten ist, soll das PHP-Script 'sterben' --> if (....) {die();}

    Du musst ganz gewoehnlich mit PHP die Verbindung zur DB herstellen,
    eine SQL-Query absetzen und das Resultat mit PHP auswerten.
    http://www.php.net/manual/de/ref.mysql.php

    Die Query koennte z.B. so aussehen:
    SELECT id FROM Tabelle WHERE id=$wert
    Dann schaust Du z.B. mit mysql_num_rows(), ob es ein Resultat gibt.

    Alternative (besser):
    SELECT COUNT(*) FROM Tabelle WHERE id=$wert
    Die Zahl steht dann im Resultat. Sollte fuer Dich 1 sein.

    Gruesse,

    Thomas

  3. So habe ich das jetzt getestet, nur leider passiert gar nichts mehr, sobald der Wert nicht in der Datenbank aufgeführt ist.

    //Von Vorseite über Formular übergeben: $wert = 11111, Beispiel

    $host="localhost";
    $user="benutzer";
    $pwd ="passwort";
    $db ="datenbank";
    $tbl ="tabelle";

    $conn = mysql_connect($host,$user,$pwd);
    if (! $conn) {echo "<p>Verbindung zur Datenbank gescheitert!</p>\n";}
    mysql_select_db($db);
    $ergebnis = mysql_query("SELECT ID FROM $tbl WHERE ID = '$wert'");

    while ($test=mysql_fetch_array($ergebnis)) {

    //Version 1
    $numrows = mysql_num_rows($test);
    if (! $numrows) {echo "<p>Kein Ergebnis</p>";}
    else {echo "<p>Ergebnis</P";}

    //Version 2
    if ($test[ID] !== $wert) {
    echo "<p>ID-Wert fehlt!</p>\n";
    die();
    }

    1. Hallo,

      So habe ich das jetzt getestet, nur leider passiert gar nichts mehr, sobald der Wert nicht in der Datenbank aufgeführt ist.

      //Von Vorseite über Formular übergeben: $wert = 11111, Beispiel

      Bist Du sicher, dass der Wert drin steht?
      Wie uebernimmst Du ihn?

      $ergebnis = mysql_query("SELECT ID FROM $tbl WHERE ID = '$wert'");

      Mach die Query lieber zuerst in eine Variable, dann kannst
      Du sie auch anzeigen lassen:

      $query="SELECT ID FROM $tbl WHERE ID = '$wert'";

      AFAIK sind die Backticks (`) um die Variablennamen nicht
      notwendig, evtl. sogar falsch. Versuch's mal ohne:

      $query="SELECT ID FROM $tbl WHERE ID = '$wert'";

      echo "Query:<br>$query<br>\n";
      $ergebnis = mysql_query($query);

      while ($test=mysql_fetch_array($ergebnis)) {

      //Version 1
      $numrows = mysql_num_rows($test);
      if (! $numrows) {echo "<p>Kein Ergebnis</p>";}

      Du solltest IMHO eher pruefen, ob es 0 oder ob es mehr Zeilen sind.
      if ($numrows<1)
        {/* kein Ergebnis*/}
      else
        {/*mind. 1 Ergebnis*/}

      (Null und false sind nicht immer gleichbedeutend!)

      else {echo "<p>Ergebnis</P";}

      ^^ Da fehlt ">". Besser klein: </p>

      //Version 2
      if ($test[ID] !== $wert) {

      Wo hast Du die Konstante ID definiert?
      Und wo/wie den Array $test?
      Und warum pruefst Du mit !== und nicht einfach mit != ?

      Wenn der String "ID" gemeint ist, solltest
      Du es unbedingt so schreiben: $test['ID'].

      Lies: "Warum ist $foo[bar] falsch?"
      http://www.php.net/manual/de/language.types.array.php#language.types.array.foo-bar
      Wichtige Ausnahme: Innerhalb von doppelten Anfuehrungszeichen:
      http://www.php.net/manual/en/language.types.string.php#AEN3553
      http://www.php.net/manual/en/language.types.array.php#AEN3791

      Gruesse,

      Thomas