erstellt am 09.10.2008 um 16:34 von BadBoy_
oder auch als Prepared Statement bekannt.
Mit diesen Anweisungen ist es sehr viel einfacher, Daten aus einer Datenbank zu lesen oder in eben jene zu schreiben. Denn um das Escapen von "Daten von außen" brauch man sich erstmal nicht direkt kümmern (damit ist man das SQL-Injektions-Problem so gut wie los).
Bislang hetze ich jeden Parameter, der von außen kommt, durch eine Funktion, um alles Gefährliche zu escapen. Das wird mir aber langsam zu blöd und da ich ja noch jung bin und eh zu viel Freizeit habe, hab ich mir gedacht, könnt ich Devbird auch mal umstellen.
MySQLi, die objektorientierte Variante der MySQL-Verbindung, nutze ich ja sowieso schon, und eben diese Variante ermöglicht auch Prepared Statements.
Aus einem Codeabschnitt wie:
$start = $DB->real_escape_string($start);
$limit = $DB->real_escape_string($limit);
$sql = "SELECT * FROM db_news WHERE published > 0 LIMIT $start, $limit";
wird dann
$stmt = $db->prepare("SELECT * FROM db_news WHERE published > 0 LIMIT ?,?");
$stmt->bind_param('dd', $start, $limit);
$stmt->execute();
Außerdem plane ich mal objektorientierter zu arbeiten. Jeder Post und jeder Kommentar wird also als Objekt behandelt (Instanzen der Klassen Post oder Comment).
Dadurch, so hoffe ich, kriege ich Code und Design auch mal wieder getrennt.
Nun: Viel Gerede und keine Taten?! Mit einem zeitigen Release dürft ihr blos nicht rechnen und Drängen gilt auch nicht (helfen dürft ihr aber^^).
Aber vielleicht bringt ja der Weihnachtsmann mal wieder Geschenke?