• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Frage zu prepared statements in mysql

Bieber

New member
Hi,

in PHP habe ich mittels PDO die Möglichkeit prepared Statements an eine Mysql-Datenbank zu senden. Dadurch muss das Statement nicht immer neu geparsed werden, wenn ich es im selben Script wieder verwende.

Da die meisten meiner queries eh nur einmal in einem Script aufgerufen werden bringt mir das reichlich wenig :icon7: . Wie verhält es sich aber, wenn das gleiche Script z.B. 20 mal kurz hintereinander ausgeführt wird, cached mysql das query?! Oder wird es dann immer wieder neu geparsed (ich vermute so verhält es sich). Gibt es vielleicht irgendwie eine Möglichkeit auf dem Mysql-Server Abfragen zu definieren die dann nur per ID angesprochen werden? So würde man sich das ständige parsen von immer gleich bleibenden Abfragen sparen, was ja auch der Sinn von prepared statements ist.

Ich habe zur Zeit übrigens kein Performanceproblem, es interessiert mich halt einfach :rolleyes: . Im Internet hab ich aber leider keine entsprechenden Infos gefunden (vermutlich gibts die von mir gewünschte Funktionalität einfach nicht).

Falls jm. sich da auskennt würde ich mich über ne kurze Info freuen.
 
Das parsen einer query ist das kleinste problem beim abfragen, wesentlich teurer ist das Erstellen des result-sets. Aber mysql hat generell einen query-cache und benutzt den auch. (Siehst du z.b. wenn du eine langsame query 2x hintereinander im pma abrufst: das erste mal lahm, das zweite mal flott ausm cache)
 
Das parsen einer query ist das kleinste problem beim abfragen, wesentlich teurer ist das Erstellen des result-sets. Aber mysql hat generell einen query-cache und benutzt den auch. (Siehst du z.b. wenn du eine langsame query 2x hintereinander im pma abrufst: das erste mal lahm, das zweite mal flott ausm cache)

jupp, hab ich vorhin auch schon gelesen :)

hab doch noch was zum Thema gefunden:
http://stackoverflow.com/questions/...rver-side-across-multiple-page-loads-with-php
da dreht es sich genau um das gleiche... es geht also leider nicht :-(
 
Unabhängig vom möglichen Geschwindigkeitsgewinn, würde ich auf jeden Fall prepared Statements einsetzen. Der Grund: SQL-Injections werden dadurch wirkungslos, man braucht nicht mehr jeden Parameter speziell zu behandeln, böse Zeichen rauszufiltern, usw. Wenn also jemand unbedingt '; drop table users; -- heißen will, dann soll er halt ;)
 
ich bin gerade dabei meinen Programmierstil zu verbessern, deswegen setze ich mich damit auseinander (eventuell werd ich auch das Zend-Zertifikat machen)

bin mir nur noch nicht sicher, ob ich zukünftig PDO oder PEAR verwende... da ich schon PEAR:Auth und Benchmark einsetze werd ich wohl auch die Datenbankklassen von Pear nehmen, mit dem minimalen Geschwindikeitsverlust muss ich dann halt Leben
 
Zurück
Oben