Wednesday, May 07, 2008

PHP 6

DeveloperWorks публикует обзорную статью об изменениях, грядущих в PHP 6
Я бы отметил, в первую очередь, изменение принципа формирования запросов к БД.  magic_quotes отменяется. Рекомендованный теперь способ - параметризация запросов (так, кстати, как это делается, например, в JDBC):

<?php
 // Using the proper parameterized query method for MySQL, as an example
 $statement = $dbh->prepare("INSERT INTO USERS (USERNAME) VALUES ?");
 $statement->execute(array($_GET['username']));
?>

И это, конечно, правильно. Во-первых, с SQL injection так можно бороться, во-вторых для подготовленных SQL операторов у системы остается больше возможностей для оптимизации (как курсор, например, это реализовать)

2 comments:

Anonymous said...

на самом деле параметризированные запросы это не самое главное, кому оно надо давно использовали adodb/mdb2/pdo.
на мой взгляд самое главное - вырезание таких костылей из основного как ereg, safe_mode, register_global, magic_quotes и т.д. - это куча костылей - источник множества ошибок безопасности.
а еще помнится обещался встроенный APC но что-то не усмотрел в файлике NEWS

Денис Радченко said...

Параметризация запросов - верный путь, удобен еще тем, что можно одни и те-же параметры использовать для запросов Insert и Updatе: создать хеш с парами поле=>значение, а потом преобразовывать их в SET k1=v1, k2=v2. А в зависимости от типа операции писать INSERT или UPDATE