Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PDO | SQL - Suchfunktion

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PDO | SQL - Suchfunktion

    Moin moin,

    ich habe nicht direkt ein Problem sondern eher eine Frage nach dem besten Weg.
    Wie die Überschrift schon vermuten lässt, habe ich eine Suchfunktion (PDO prepared statement) geschrieben:
    PHP-Code:
        public function sqlSearch ($value) {
            
            
    $stmt $this->db->prepare ("SELECT * "
                                                            
    ."FROM table "
                                                            
    ."WHERE MATCH (value) "
                                                            
    ."AGAINST ('$value')");
            
            
    $stmt->execute ();

            
    $result $stmt->fetchAll(PDO::FETCH_ASSOC);
            return 
    $result;
        } 
    Die funktioniert so auch ohne Probleme!
    Allerdings ist ja eigentlich gänige Praxis SQL Variablen in prepared statements folgendermaßen zu deklarieren:
    PHP-Code:
    "AGAINST ('value = :value')" 
    ...um ihre dann in der Zeile...
    PHP-Code:
    $stmt->execute (array (':value' => $value)); 
    ...einen Wert zu zuweisen und die Query auszuführen.

    Das funktioniert aber nicht, ein var_dump auf $stmt gibt mir die Query dann so aus:
    PHP-Code:
    "SELECT * FROM table WHERE MATCH (value) AGAINST ('value =:value') 
    Sprich der Wert aus $value wird nicht übernommen!
    Ich finde diese Lösung irgendwie 'unsauber' und hätte mal gerne eure Meinung dazu.

    LG
    Markus
    Gelber Schnee ist kein Zitroneneis!

  • #2
    http://stackoverflow.com/questions/1...ltext-searches

    The pattern in AGAINST() must be a constant string, not a query parameter. Unlike other constant strings in SQL queries, you cannot use a query parameter here, simply because of a limitation in MySQL.
    Suchworte: pdo prepare mysql match

    Alternative steht auch in der Antwort
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Ups, das muss cih wohl überlesen haben...
      Dann hat sich das schon erledigt!

      Vielen Dank
      Gelber Schnee ist kein Zitroneneis!

      Kommentar


      • #4
        http://de2.php.net/manual/en/pdostat...cute.php#71929

        Lass mal den Doppelpunkt im Array-Schlüssel weg... andererseits sollte es auch so funktionieren, wie du es gemacht hast (mit dem Doppelpunkt).

        edit: Oh, VPh hat die richtige Antwort bereits gefunden, never mind
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar

        Lädt...
        X