Statement zu einem prepared Statement umwandeln

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

  • Statement zu einem prepared Statement umwandeln

    Hallo,
    folgendes möchte ich erreichen: Ich übergebe einer Methode ein SQL-Statement. Etwa so:
    PHP-Code:
    <?php
        $db
    ->execute("SELECT * FROM users WHERE Username = '" $_POST['username'] . "' AND Password = '" $_POST['password'] . "';");
    ?>
    Die Methode soll das jedoch als ein prepared Statement ausführen.
    Also daraus "SELECT * FROM users WHERE Username = ? AND Password = ?" und dann halt per mysqli_bind_param() auch wieder die Parameter anhängen. Das muss doch mit regulären Ausdrücken möglich sein, oder nicht?
    Das Problem ist nur, dass ein Statement ja nicht immer so einfach ist. Man muss ja auch Dinge wie "LIMIT" oder "ORDER BY" beachten, die Werte da können auch variabel sein. Dazu kommen die Leerzeichen vor den Gleichheitsszeichen, die man weglassen kann, das Semikolon am Ende, die beiden Typen von Anführungszeichenn usw.

    Vielleicht kennt ja jemand sogar ein fertiges Script oder kann mir ein wenig auf die Sprünge helfen!

    Danke schonmal!

    Johannes

  • #2
    Also wenn du an bestimmte stellen eine Variablenwert anhängen möchtest. So hab ich es jetzt verstanden dann würde ich

    sprintf empfehlen

    http://de3.php.net/manual/de/function.sprintf.php

    EDIT ***

    Also ich glaube ich weiß was du meinst.

    Wieso machst du in den SQL-Statement nicht einfach ein Bestimmten Parameter rein und die Werte für diese Variablen übergibst du per Array als einen weiteren Methoden-Wert

    mfg

    DigitalDoener
    Zuletzt geändert von DigitalDoener; 17.08.2006, 00:23.

    Kommentar


    • #3
      Zu der Lösung mit sprintf():
      Wie soll ich denn die Fragezeichen an einer bestimmten Stelle einfügen, wenn ich gerade diese Stellen nicht kenne?

      Zu deinem zweiten Vorschlag:
      Da ich einfach nur ein SQL-Statement übergeben möchte, nicht noch irgendein "Schnick-Schnack" - das macht den Code schnell unübersichtlich und außerdem möchte ich als Programmierer nichts von dem prepared Statement wissen, sondern einfach nur ein Statement übergeben, das dann die Methode entsprechend verarbeitet. So ist die Methode auch flexibler!

      Kommentar


      • #4
        Was du vor hast ist unglaublicher Overhead, du wirst in einer vernünftigen Anwendung, deren Performance nur deswegen nicht in den Keller gehen soll, nicht darum herum kommen jegliche Queries neu zu schreiben.

        Aber vorher solltest du wissen, dass prepared Statements in mysqli sehr buggy sind, nutz mal die Suchfunktion ich hab dazu passend mal einen Thread eröffnet, weil ich halb am verzweifeln war .... überleg es dir gut, ob du das WIRKLICH willst....

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar

        Lädt...
        X