Mischa: Prüfen, ob Datensatz vorhanden ist

Hallo SelfForumler,

ich bin heute auf eine Frage gestoßen, auf die ich bisher keine Antwort im Internet gefunden habe. Und zwar wollte ich Daten aus einer Datenbank (Mischa) genau dort auslesen, wo die Bedingungen cat = $cat und page = $page erfüllt sind (siehe Beispiel).

$singleline = mysql_query("SELECT * FROM Mischa WHERE cat = '$cat' AND page = '$page'");

$title = mysql_result($singleline, 0, "title");

$content = mysql_result($singleline, 0, "content");

Nun kann es aber durchaus sein, dass für die eingelesenen Werte der variablen $cat und $page keine entsprechenden Datensätze vorhanden sind, die beide Bedingungen erfüllen. In diesem Fall gibt PHP im Browser folgendes zurück:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 2 in ..... on line ....

Meine Frage:
Wie kann ich im PHP-Script überprüfen, ob ein Datensatz leer ist oder anders: Wie kann ich überprüfen, ob zu den Variablen der beiden "Tabellenspalten" auch Datenbankeinträge vorhanden sind und so die Fehlermeldung im Browser vermeiden?

Danke für Eure Antworten!

Viele Grüße,
Mischa

--
=========================
www.youth-page.de
www.mischa-hildebrand.de
  1. Hi

    ich bin heute auf eine Frage gestoßen, auf die ich bisher keine Antwort im Internet gefunden habe. Und zwar wollte ich Daten aus einer Datenbank (Mischa) genau dort auslesen, wo die Bedingungen cat = $cat und page = $page erfüllt sind (siehe Beispiel).

    $singleline = mysql_query("SELECT * FROM Mischa WHERE cat = '$cat' AND page = '$page'");

    mach hier ein
    if (mysql_num_rows($singleline) > 0) {

    }

    MfG
    Rouven

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Danke für die schnelle Antwort!
      Funktioniert einwandfrei.

      Viele Grüße,
      Mischa

      --
      =========================
      www.youth-page.de
      www.mischa-hildebrand.de
  2. Hallo Mischa

    ich bin heute auf eine Frage gestoßen, auf die ich bisher keine Antwort im Internet gefunden habe. Und zwar wollte ich Daten aus einer Datenbank (Mischa) genau dort auslesen, wo die Bedingungen cat = $cat und page = $page erfüllt sind (siehe Beispiel).

    So ist es ein wenig ordentlicher:
    $singleline = "SELECT * FROM Mischa WHERE cat = "".$cat."" AND page = "".$page.""";

    Danach machst du den Sql query und fragst gleichzeitig auch ab , ob der Query erfolgreich ausgeführt wurde:

    if(($resultset=mysql_query($singleline,$verbindungskennung))!=FALSE)
      {
      if(mysql_num_rows($resultset)==0)
        {
        //Kein Datensatz vorhanden
        exit;
        }
      else
        {
        //Datensatz wurde gefunden, hier kannst du dann dein Skript
        //fortsetzen...$resultset ist dann das zurückgegebene mysql
        //Ergebnis
        }
      }
    else
      {
      //mysql_query wurde nicht erfolgreich durchgeführt
      }

    die Variable $verbindungskennung ist deine Verbindungs id, die musst du ersetzen

    Ich hoffe, dir geholfen zu haben

    mfg Daniel

    1. Hallo,

      stimmt - wäre auch eine Möglichkeit gewesen, danke. Hätte ich sogar selbst drauf kommen müssen... aber wozu die Schreibweise "".$cat."" in der folgenden Zeile? Was bewirkt das im Gegensatz zu einem simplen Hochkomma?

      $singleline = "SELECT * FROM Mischa WHERE cat = "".$cat."" AND page = "".$page.""";

      Viele Grüße,
      Mischa

      --
      =========================
      www.youth-page.de
      www.mischa-hildebrand.de
      1. Hallo Mischa

        stimmt - wäre auch eine Möglichkeit gewesen, danke. Hätte ich sogar selbst drauf kommen müssen... aber wozu die Schreibweise "".$cat."" in der folgenden Zeile? Was bewirkt das im Gegensatz zu einem simplen Hochkomma?

        Hier steht eine kleine Erklärung von den Vorteilen verschiedener Kommazeichen und Schreibweisen.

        http://www.php.net/manual/en/language.types.string.php

        $singleline = "SELECT * FROM Mischa WHERE cat = "".$cat."" AND page = "".$page.""";

        Ich benutze eigentlich immer doppelte Anführungszeichen, in diesem Fall ist habe ich deine Vergleichsvariablen in "" gesetzt, weil ich nicht wusste ob du eine Zahl oder einen String angibst, mit Anführungszeichen entstehen keine Abfrageprobleme, weil mysql auch Zahlen unter Anführungszeichen mit numerischen Werten überprüft.

        Der \ ist ein Escape Zeichen und sorgt dafür, dass nachfolgende " als String und nicht als Begrenzungszeichen aufgefasst wird, sonst würde dein String nämlich hier(-->"".$cat.... ) zu Ende sein und ein Syntaxfehler wäre die Folge

        also, zb

        $test = "hallo";
        echo "".$test."";

        gibt dann

        "test"

        aus

        Grüsse,
        Daniel