class DB
{
private static $instance = NULL;
private static $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
PDO::MYSQL_ATTR_INIT_COMMAND => "SET lc_time_names = 'ru_RU'");
private function __construct()
{
}
private function __clone()
{
}
public static function connect($host = NULL, $user = NULL, $pass = NULL, $db = NULL)
{
if (!self::$instance)
{
self::$instance = new PDO("mysql:host=$host;dbname=$db", $user, $pass, self::$options);
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
}
коннект есть, но вот теперь интересно, как писать лучше PDO обвертки к методам?
к примеру
function query($sql)
{
return DB::connect()->query($sql);
}
или легче её сделать не как отдельную функцию, а как статический метод внутри класса DB и вообще не легче ли DB классу задать наследование PDO класса?
так же интересует вопрос о функции mysql_real_escape_string() - не работает, пишет
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user '????'@'localhost' (using password: NO) in Z:\home\localhost\www\libs\default_function.php on line 184
как сделать безопасные запросы SQL, prepare и execute не буду для единичного типичного запроса.. так что не вариант всегда использовать
кто может - делитесь своими обертками к методам PDO )
Спустя 1 час, 46 минут, 42 секунды (14.02.2012 - 23:29) Winston написал(а):
Цитата (zeromind @ 14.02.2012 - 20:42) |
так же интересует вопрос о функции mysql_real_escape_string() - не работает, пишет |
PDO сам обработает SQL запрос, потому по поводу SQL-inj можешь не париться.
Спустя 6 минут, 16 секунд (14.02.2012 - 23:35) zeromind написал(а):
Цитата (Winston @ 14.02.2012 - 23:29) | ||
PDO сам обработает SQL запрос, потому по поводу SQL-inj можешь не париться. |
sql inj обрабатываются ток в плейсхолдерах, когда запрос делаеш как подготовленное выражение - prepare() и execute().. в простом query() запросе, не обрабатывается это факт, quote() тут помогает..
Спустя 6 часов, 26 минут, 31 секунда (15.02.2012 - 06:02) Игорь_Vasinsky написал(а):
Цитата |
в простом query() запросе, не обрабатывается это факт |
разве?