Ehh, nauka PHP5 idzie mi dosyć ciężko. Trudno mi załapać tą całą obiektówkę, rzucanie wyjątków, MVC, fabryki, singletony i inne ‘barachło’ :) Chyba za stary jestem na takie zmiany :)

Pare ostatnich dni szukałem jakiegoś layera DB. Kiedyś w paru projektach użyłem PEAR::db, potem napisałem (przerobiłem gotową) klasę obsługującą tylko MySQL + mały benchmark czasów wykonania zapytań/ilości zapytań. Teraz musiałbym to przepisac na Oo i PHP5 więc pomyślałem, że rozejrze się za czymś gotowym co będzie z milion razy lepsze niż moje gryzmoły.

I tak oto wpadłem na Creole. Fajna sprawa. Przy okazji ich manualka skumałem wreszcie o co chodzi w tych zapytaniach preinterpretowanych :) Młodzi - nie śmiać się :) Czytałem fragmencik o tym bodajże w “PHP. Vademecum profesjonalisty” ale nic nie skumałem, kiepsko było wytłumaczone. A tu wystarczyło mi kilka linijek manuala Creole i już, eureka (pyk, zaświeciła mi się żarówka nad “łepkiem” :))

$stmt = $conn->prepareStatement(”INSERT INTO users (id, name, created) VALUES (?,?,?)”);
$stmt->setInt(1, $id);
$stmt->setString(2, $name);
$stmt->setTimestamp(3, time());
$stmt->executeUpdate();

Co to nam daje? Jesli dobrze skumałem to: raz - odpada ciągłe addslashowanie (tudzież mysql_real_escape_stringowanie) wprowadzanych wartości, a dwa - odpada także sprawdzanie rodzaju (string, int, data…) co w sumie zupełnie eliminuje problem sql_injection.

Jak coś pomyliłem, źle skumałem :) to dajcie znać w komentach :) Ciekaw też jestem jaki wpływ mają takie zapytania na bazy, konkretnie na MySQL? Podnosi to jakoś wydajność? Może wręcz przeciwnie?