[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PDO
zeromind
решил освоить PDO драйвер, написал класс с использованием паттерна синглтон:

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)
Цитата (zeromind @ 14.02.2012 - 20:42)
так же интересует вопрос о функции mysql_real_escape_string() - не работает, пишет

PDO сам обработает SQL запрос, потому по поводу SQL-inj можешь не париться.

sql inj обрабатываются ток в плейсхолдерах, когда запрос делаеш как подготовленное выражение - prepare() и execute().. в простом query() запросе, не обрабатывается это факт, quote() тут помогает..

Спустя 6 часов, 26 минут, 31 секунда (15.02.2012 - 06:02) Игорь_Vasinsky написал(а):
Цитата
в простом query() запросе, не обрабатывается это факт

разве?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.