Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] DB Abfrage mit Suchwortfunktion

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] DB Abfrage mit Suchwortfunktion

    Hallo,

    ich möchte in meiner Datenbank nach Einträgen suchen, die einen bestimmten String enthalten. Leider tut es nicht ganz und ich weiß nicht warum?!

    Meine Abfrage sieht so aus:

    PHP-Code:
    $abfrage "SELECT * FROM xxx WHERE substr_count(strtolower(ProductLongDescription),strtolower("$searchword")) >= 1 ORDER BY RAND() LIMIT 20";
    $db_erg mysql_query$abfrage );

    while (
    $zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
    {
    echo 
    $zeile['ImageMediumURL']

    Es kommt die Meldung:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in xxx.php on line 126

    Line 126 = while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))

    Was mache ich falsch??

  • #2
    Was du falsch machst wird dir mysql_error() sagern können denn offensichtlich wird deine Abfrage nicht ausgeführt (dann liefert mysql_query false anstatt einer Ressource)
    "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

    Kommentar


    • #3
      Zitat von Dark Guardian Beitrag anzeigen
      Was du falsch machst wird dir mysql_error() sagern können denn offensichtlich wird deine Abfrage nicht ausgeführt (dann liefert mysql_query false anstatt einer Ressource)
      Die Fehlermeldung ist:

      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(strtolower(ProductLongDescription),strtolower(hu nd)) >= 1 ORDER BY RAND() LIMIT' at line 1

      Muss ich irgendwo noch Anführungszeichen setzen? Der Parameter ProductLongDescription stimmt auf jeden Fall mit der Schreibweise in der DB überein.

      Kommentar


      • #4
        Probiers mal damit:
        Code:
        ... strtolower('hu nd') ...
        Signatur:
        PHP-Code:
        $s '0048656c6c6f20576f726c64';
        while(
        $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

        Kommentar


        • #5
          Die Funktion substr_count existiert in MySQL nicht.

          MySQL :: MySQL 5.0 Reference Manual :: 11.5 String Functions

          Suche nach dem Kommentar:
          Posted by Andrew Hanna on August 24 2006 8:04pm
          Die äquivalente MySQL-Funktion zu strtolower() lautet LOWER().
          [URL]http://hallophp.de[/URL]

          Kommentar


          • #6
            Zitat von ByStones Beitrag anzeigen
            Probiers mal damit:
            Code:
            ... strtolower('hu nd') ...
            Selbe Ergebnis:

            You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(strtolower(ProductLongDescription),strtolower('h und')) >= 1 ORDER BY RAND() LIM' at line 1

            Kommentar


            • #7
              Ok, soweit dass es die Funktion garnet gibt hab ich garnet gedacht...

              Warum benutzt du eigentlich nicht LIKE ?
              Signatur:
              PHP-Code:
              $s '0048656c6c6f20576f726c64';
              while(
              $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

              Kommentar


              • #8
                Zitat von ByStones Beitrag anzeigen
                Ok, soweit dass es die Funktion garnet gibt hab ich garnet gedacht...

                Warum benutzt du eigentlich nicht LIKE ?
                Habe ich auch schon probiert aber dann gbt er mir keine Ergebnisse -> und es gibt definitiv Ergebnisse

                Kommentar


                • #9
                  Zitat von Rutor Beitrag anzeigen
                  $abfrage = "SELECT * FROM xxx WHERE substr_count(strtolower(ProductLongDescription),st rtolower(". $searchword. ")) >= 1 ORDER BY RAND() LIMIT 20";
                  Wer hat dir bitte gesagt, dass man innerhalb von Strings PHP - Funktionen ausführen kann?

                  Wenn man das umbedingt in der Abfrage abfackeln will, denn eher so:

                  PHP-Code:
                  $abfrage "SELECT * FROM foo WHERE bar = '" strtolower('ALLES KLEIN') . "'"
                  BG

                  Kommentar


                  • #10
                    Habe es auch mal so probiert:

                    WHERE". substr_count(strtolower( ."ProductLongDescription" .),strtolower( ."'$searchword'".))." >= 1 ORDER BY RAND() LIMIT 20";

                    Aber dann sagt er mir

                    Parse error: syntax error, unexpected '.', expecting ')' in xxx.php on line 122

                    Line 122 ist die aufgeführte

                    Kommentar


                    • #11
                      Zitat von Rutor Beitrag anzeigen
                      Habe ich auch schon probiert aber dann gbt er mir keine Ergebnisse -> und es gibt definitiv Ergebnisse
                      Wie hast du das probiert ? (Code plz)

                      Edit:
                      PHP-Code:
                      echo "WHERE"substr_count(strtolower( ."ProductLongDescription" .),strtolower( ."'$searchword'".))." >= 1 ORDER BY RAND() LIMIT 20"
                      Abgesehen von den Syntax-Fehlern kann das so nicht gehen, weil das Suchen substr_count in der DB ausgeführt werden muss da er auf die spalte ProductLongDescription zugreifen muss.
                      Da wurschtelst du PHP und MySQL zusammen.
                      Artikel:Kontextwechsel – SELFHTML
                      Signatur:
                      PHP-Code:
                      $s '0048656c6c6f20576f726c64';
                      while(
                      $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

                      Kommentar


                      • #12
                        Zitat von StefanRHRO Beitrag anzeigen
                        Wer hat dir bitte gesagt, dass man innerhalb von Strings PHP - Funktionen ausführen kann?

                        Wenn man das umbedingt in der Abfrage abfackeln will, denn eher so:

                        PHP-Code:
                        $abfrage "SELECT * FROM foo WHERE bar = '" strtolower('ALLES KLEIN') . "'"
                        BG
                        Ich versuche in einem Text aus der DB das Wort Hund zu suchen und wenn es drin ist soll er den Eintrag anzeigen. Ich weiß irgendwie keinen anderen Ansatz als den, den ich gepostet habe. Und der scheint ja der beschi..enste zu sein?!
                        Kann ich das irgendwie anders angehen?

                        Kommentar


                        • #13
                          Wie sieht dein Code beim Einsatz von LIKE aus?
                          [URL]http://hallophp.de[/URL]

                          Kommentar


                          • #14
                            Zitat von ByStones Beitrag anzeigen
                            Wie hast du das probiert ? (Code plz)
                            ... WHERE ProductLongDescription LIKE '$searchword' ORDER ...

                            Kommentar


                            • #15
                              Versuchs mal nach dem Prinzip:
                              Code:
                              SELECT * FROM products WHERE description LIKE '%dein suchwort%'
                              http://dev.mysql.com/doc/refman/5.1/...functions.html
                              Signatur:
                              PHP-Code:
                              $s '0048656c6c6f20576f726c64';
                              while(
                              $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

                              Kommentar

                              Lädt...
                              X