Thread Auch PHP ... (15 answers)
Opened by rosti at 2020-12-30 13:23

rosti
 2020-01-02 08:28
#191057 #191057
User since
2011-03-19
3180 Artikel
BenutzerIn
[Homepage]
user image
Moin ;)

Mit prepared Statements bist Du auf jeden Fall abgesichert. Andererseits hast Du

Code (perl): (dl )
1
2
  $dbh->quote($input);
  $dbh->quote_identifier($feldname);


was Du explizit verwenden kannst um SQL Injekts zu vermeiden. Der Sinn von prepared Statements wird hier deutlich:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
    function _fetch_mesg($mesgid){
        if( ! isset($this->STH_FETCH_MESG)  ){
            $this->STH_FETCH_MESG = $this->DBH->prepare("
                SELECT *, 
                DATEDIFF(NOW(), mesgdate) as age 
                FROM $this->TABN WHERE mesgid=?");
        }
        $this->STH_FETCH_MESG->execute(array($mesgid));
        $mesg = $this->STH_FETCH_MESG->fetchAll();
        if( empty($mesg) ){ dd("Diese Nachricht existiert nicht!"); }
        return $mesg[0];
    }


Der Statementhandler wird in einer Eigenschaft Deiner Hauptinstanz gepuffert. Das ist zwar PHP aber die Zweckbestimmung ist klar, beim nächsten Aufruf der Funktion liegt STH bereits vor und muss nur noch mit dem mitgegebenem Platzhalter gefeuert werden.

Ich hatte mal ein ziemlich umfangreiches Skript mit vielen solcher Statements, die alte Version ohne prepared STH brauchte 2 Minuten, die neue Version mit STH nur noch 10 Sekunden.


Weitermachen ;)

View full thread Auch PHP ...