Stephan: Was ist falsch in PHP?

Hallo,

ich habe folgenden Code, er sollte dann das Suchergebnis ausgeben, wenn man aber kein Suchergebnis eingegeben hat, kommt das:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web1027/html/de/search/ergebnis.php3 on line 242

241:   $res = mysql_db_query("", "SELECT * FROM Search-Engine WHERE titel LIKE %{$suche}% OR meta LIKE %{$suche}% OR beschreibung LIKE %{$suche}% ORDER BY pr DESC");
242:   $num = mysql_num_rows($res);
243:
244:   // Tabellenbeginn
245:   echo "<table border=0>";

Kann mir jemand sagen, was falsch ist? Und wie kann ich es machen, dass wenn kein Suchergebnis gefunden wurde kommt: Die Suche ergab kein Ergebnis.

Danke schon jetzt

Stephan

  1. Hallo !

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web1027/html/de/search/ergebnis.php3 on line 242

    241:   $res = mysql_db_query("", "SELECT * FROM Search-Engine WHERE titel LIKE %{$suche}% OR meta LIKE %{$suche}% OR beschreibung LIKE %{$suche}% ORDER BY pr DESC");
    242:   $num = mysql_num_rows($res);

    Kann mir jemand sagen, was falsch ist? Und wie kann ich es machen, dass wenn kein Suchergebnis gefunden wurde kommt: Die Suche ergab kein Ergebnis.

    Tja, wie wärs denn mit einem einfachen mysql_db_query() or blabla(); ?? Bei Fehlern wird blabla() aufgerufen, was dann eben eine Fehlermeldung ausgibt, in der Form von:

    KEin Suchergebnis gefunden <klein>Oder der Admin hat ne schlechte suche erstelt

    ;-) nein, aber hast du deine Suchmaschiene selbst programmiert ? Oder irgendwas vorgeschriebenes aus'm internet ? Falls das 2. zutreffend ist, sag mir mal bitte deine Quelle, meine lokale Suchmaschiene ist nämlich ein bisschen schrottig, und außerdem nutzt sie keine Datenbank, sondern eine Textdatei (schlecht...)

    benji

    --
    © by benji
    ® by benji
      all rights reserved
    1. Ich habe die selbst gemacht, ist nichts großes, kann sie Dir geben, wenn mir jemand den Error wegmachen hilft...

      (Oder kommt der Error von der keine Ergebnisse anzeige?)

  2. Hallo,

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web1027/html/de/search/ergebnis.php3 on line 242

    Das sagt, dass deine MySQL Query nicht in Ordnung ist.

    241:   $res = mysql_db_query("", "SELECT * FROM Search-Engine WHERE titel LIKE %{$suche}% OR meta LIKE %{$suche}% OR beschreibung LIKE %{$suche}% ORDER BY pr DESC");

    Und das sagt, dass du das Manual nicht gelesen hast http://at2.php.net/manual/en/function.mysql-db-query.php.

    gruß,
    Severin

    --
    Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
    --Philip K. Dic
    1. Hallo,

      ich habe ein anderes Manual gelesen, da stand das so drin (ausser das mit dem WHERE ... like ...)

      Danke schon jetzt

      Stephan

      1. Hallo,

        ich habe ein anderes Manual gelesen, da stand das so drin (ausser das mit dem WHERE ... like ...)

        Darf ich fragen welches?

        gruß,
        Severin

        --
        Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
        --Philip K. Dick
        1. Galileo Computing PHP Openbook, ist hanz gut, hat viele Beispiele...

          1. Hallo,

            Galileo Computing PHP Openbook, ist hanz gut, hat viele Beispiele...

            Ich kenne es nicht, aber du solltest dich generall an das offizielle Manual auf http://www.php.net halten und da steht ganz klipp und klar, dass du die Funktion mysql_db_query _nicht_ verwenden sollst.

            gruß,
            Severin

            --
            Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
            --Philip K. Dick
            1. Ok, dann muss ich mal nachsehen, was ich dann nehme...

              Danke für die Hilfe

              Stephan

              1. Jo Meister

                echo mysql_errno() . ": " . mysql_error() . "\n";
                Gibt Dir aus wo der Fehler ist!

                mysql_query ()
                Könnte helfen!

                TomIRL

  3. Hi Stephan,

    241:   $res = mysql_db_query("", "SELECT * FROM Search-Engine WHERE titel LIKE %{$suche}% OR meta LIKE %{$suche}% OR beschreibung LIKE %{$suche}% ORDER BY pr DESC");

    sieht so aus als wäre Dei SQL etwa schräg.

    evtl. ist das besser:
    SELECT * FROM Search-Engine WHERE titel LIKE "%$suche%" OR meta LIKE "%$suche%" OR beschreibung LIKE "%$suche%"

    Das ORDER by sollte den entsprechenden Spaltennamen tragen. Die Spalte heißt sicher nicht 'pr DESC', oder?

    Die Query dann mal auf der Kommandozeile ausführen und testen, ob sie funzt!

    Wenn die Query ein Ergebnis auswirft und keine Fehlermeldung, dann bau sie in Dein Script ein. Hier ein Beispiel wie es funzen könnte:

    <?php

    $host = <host_name>;
    &db = <datenbank_name>;
    $uesr = <user_name>;
    $passwd = <password>;

    $connection = mysql($host, $user, $passwd);
    mysql_select_db($db, $connection)
    die("Konnte keine Verbindung mit der db herstellen!");

    $query = "Dein_Select_Statement";

    function function_name($connection, $query)
    {
        $result = @ mysql($query, $connection)
        die("Ein Fehler ist bei der Datenbankabfrage aufgetreten!");

    if (mysql_num_rows($result) == 1)
        {
            ?>
     <DEIN_HTML>
            <?php
        }
    }
    function_name($connection, $query);

    ?>

    Gruß Frank: