Raul Glattmann: mysql_query true oder false zurück geben

Hallo,

ist es auch irgendwie möglich von einem mysql_query nur true oder false zurück zugeben? Weil ich brauch eigentlich nicht den Wert der in dem Feld steht ich muß nur Wissen ob er vorhanden ist.

So frage ich momentan ab:

mysql_query("SELECT Milchkuh from Bauer WHERE NR = '$_REQUEST[Kuh_Nr]'", $dbh)

Und dann frage ich mit if in php ab ob der Wert vorhanden ist.
Aber vielleicht kann ich hier noch etwas an Resourcen sparen?

Weiß jemand mehr?

Danke Raul Glattmann

  1. Hi,

    mysql_query("SELECT Milchkuh from Bauer WHERE NR = '$_REQUEST[Kuh_Nr]'", $dbh)

    wenn NR ein Primärschlüssel und somit eindeutig ist, würde ich danach ein if (mysql_num_rows() == 1) machen. mysql_query() liefert immer true, wenn die Abfrage erfolgreich war (wenn also kein Syntaxfehler o.ä. aufgetreten ist).

    viele Grüße
      Achim Schrepfer

    --
    http://reskit.speedesign.de/ - PHP-Bibliothek zum automatischen Erzeugen von HTML-Tabellen, -Formularen und -Baummenüs anhand von MySQL-Tabellen
    Selfcode: sh:) fo:| ch:| rl:° br:> n4:{ ie:% mo:} va:| de:< zu:| fl:( ss:) ls:& js:|
    1. mysql_query("SELECT Milchkuh from Bauer WHERE NR = '$_REQUEST[Kuh_Nr]'", $dbh)

      wenn NR ein Primärschlüssel und somit eindeutig ist, würde ich danach ein if (mysql_num_rows() == 1) machen. mysql_query() liefert immer true, wenn die Abfrage erfolgreich war (wenn also kein Syntaxfehler o.ä. aufgetreten ist).

      Also heißt das mit mysql_query(); bekomme ich nur true oder false zurück nicht den Wert von Milchkuh? Weil den Wert möchte ich von mysql nicht zurückgeliefert haben das wären überflüssige Resourcen.

      Also heißt das also das ich die Ergebnis Kennung von der Datenbank erst bekomme wenn ich mysql_fetch_row() oder andere Funktionen ausführe?

      In meinem Fall brauche ich wie schon gesagt kein Ergebnis nur true oder false.

      1. Hi,

        Also heißt das mit mysql_query(); bekomme ich nur true oder false zurück nicht den Wert von Milchkuh? Weil den Wert möchte ich von mysql nicht zurückgeliefert haben das wären überflüssige Resourcen.

        due Werte bekommst Du ersten mit einem fetch-Aufruf - z.B. mysql_fetch_row(). mysql_query() führt ja nur die Abfrage aus und liefert eine Verbindungskennung mit der dann im weiteren Verlauf auf das Abfrageergebnis zugegriffen werden kann. Es werden also keine Ressourcen verschwendet ;)

        viele Grüße
          Achim Schrepfer

        --
        http://reskit.speedesign.de/ - PHP-Bibliothek zum automatischen Erzeugen von HTML-Tabellen, -Formularen und -Baummenüs anhand von MySQL-Tabellen
        Selfcode: sh:) fo:| ch:| rl:° br:> n4:{ ie:% mo:} va:| de:< zu:| fl:( ss:) ls:& js:|
    2. wenn NR ein Primärschlüssel und somit eindeutig ist, würde ich danach ein if (mysql_num_rows() == 1) machen. mysql_query() liefert immer true, wenn die Abfrage erfolgreich war (wenn also kein Syntaxfehler o.ä. aufgetreten ist).

      viele Grüße
        Achim Schrepfer

      Hi,

      ich habe es ausprobiert aber es funktioniert nicht!

      $db = getConn();
           $rs = mysql_query("SELECT * from kuhstall WHERE Nr = '$kuh_nr'" , $db) or die ('Ein Fehler ist aufgetreten: ' . mysql_error());

      if (mysql_num_rows($rs) == 1):
         echo "Ja die Kuh lebt noch!";
        endif;

      Die Nummer existiert aber es wird mir nichts ausgeben?

      1. Hi,

        $db = getConn();
             $rs = mysql_query("SELECT * from kuhstall WHERE Nr = '$kuh_nr'" , $db) or die ('Ein Fehler ist aufgetreten: ' . mysql_error());

        if (mysql_num_rows($rs) == 1):
           echo "Ja die Kuh lebt noch!";
          endif;

        Liefert die Anfrage WIRKLICH nur einen Datensatz zurück? Dann müsste das eigentlich auf jeden Fall funktionieren. Mach einfach mal ein

        echo mysql_num_rows($rs);

        viele Grüße
          Achim Schrepfer

        --
        http://reskit.speedesign.de/ - PHP-Bibliothek zum automatischen Erzeugen von HTML-Tabellen, -Formularen und -Baummenüs anhand von MySQL-Tabellen
        Selfcode: sh:) fo:| ch:| rl:° br:> n4:{ ie:% mo:} va:| de:< zu:| fl:( ss:) ls:& js:|
  2. Hallo,

    Hi!

    ist es auch irgendwie möglich von einem mysql_query nur true oder false zurück zugeben? Weil ich brauch eigentlich nicht den Wert der in dem Feld steht ich muß nur Wissen ob er vorhanden ist.

    <a href="http://de.php.net/manual/de/function.mysql-query.php">http://de.php.net/manual/de/function.mysql-query.php</a>

    "Nur für SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine Ressourcen-Kennung oder FALSE, falls die Anfrage nicht korrekt ausgeführt wurde. Für alle anderen SQL Anweisungen ist der Rückgabewert von mysql_query() im Erfolgsfall TRUE, im Fehlerfall FALSE. Ein Rückgabewert ungleich FALSE bedeutet, dass die Anfrage gültig war und vom Server ausgeführt werden konnte. Das alleine sagt jedoch überhaupt nichts über die Anzahl veränderter oder gelieferter Datensätze aus. Es ist durchaus möglich, dass eine Anfrage erfolgreich war, ohne einen einzigen Datensatz zur verändern oder zu liefern."

    So frage ich momentan ab:

    mysql_query("SELECT Milchkuh from Bauer WHERE NR = '$_REQUEST[Kuh_Nr]'", $dbh)

    Und dann frage ich mit if in php ab ob der Wert vorhanden ist.
    Aber vielleicht kann ich hier noch etwas an Resourcen sparen?

    ja:

    if (mysql_affected_rows() > 0)

    Danke Raul Glattmann

    Viele Grüße

    Maresa

    1. hi,

      <a href="http://de.php.net/manual/de/function.mysql-query.php">http://de.php.net/manual/de/function.mysql-query.php</a>

      </faq/#Q-19> sagt dir, wie man hier verlinken kann.

      Aber vielleicht kann ich hier noch etwas an Resourcen sparen?

      ja:

      nein.

      if (mysql_affected_rows() > 0)

      wenn du schon das manual zitierst, hättest du aber auch unter http://www.php.net/manual/de/function.mysql-affected-rows.php mal nachschlagen können, um zu sehen dass das nur bei INSERT, UPDATE oder DELETE ein ergebnis liefert.

      gruss,
      wahsaga

      1. yo,

        if (mysql_affected_rows() > 0)

        wenn du schon das manual zitierst, hättest du aber auch unter http://www.php.net/manual/de/function.mysql-affected-rows.php mal nachschlagen können, um zu sehen dass das nur bei INSERT, UPDATE oder DELETE ein ergebnis liefert.

        wobei man ergänzen kann, dass es auch bei select mit einer anderen funktion geht, mysql_num_rows()

        Ilja

    2. if (mysql_affected_rows() > 0)

      Das kenne ich noch gar nicht das schaue ich mir nun an aber ich habe nun noch eine Frage ich habe nun mysql_free_result  gefunden muß ich das machen? Ich dachte die Datenbank gibt den Speiecher Serverseitig automatisch irgendwann wieder frei ist das nicht eine einstellung vom Administrator des Servers?

      Gruß Raul