Докато Codeigniter внедри използването на PDO, има ли начин да се използва хакване в CI, което е стабилно и сигурно? В момента, вместо да използвам db драйвера, използвам модел, който съдържа целия ми PDO код като prepare
, fetch
, execute
и т.н. Какво правите останалите?
Codeigniter: Използване на PDO вместо mysql
Отговори (5)
На CodeIgniter 2.1.4+ с помощта на MySQL бази данни (Редактирайте файла: /application/config/databases.php).
За да използвате PDO:
$db['default']['hostname'] = 'mysql:host=localhost';
$db['default']['dbdriver'] = 'pdo';
За да използвате MySQLi
$db['default']['hostname'] = 'localhost';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['hostname'] = 'mysql:host=localhost;dbname=database_name';
или получавате грешка en, че не е избрана база данни.
- person SteeveDroz; 03.03.2019
Използването на PDO драйвери вместо mysql изисква промяна на името на хоста и dbdriver по този начин:
$db['default']['hostname'] = 'mysql:host=localhost';
$db['default']['dbdriver'] = 'pdo';
CI, ако се използва правилно, е надежден и безопасен. Използването на PDO, макар и по-добро, ако не използвате рамка, не е задължително да ви е от голяма полза пред класа CI_Database.
Ако наистина ви притеснява, можете да замените mysql_*()
функциите с еквивалентните mysqli_*()
функции, но това наистина няма да осигури забележима разлика, освен ако не извършвате свръхоптимизиране.
Трябва да се отбележи, че това всъщност може да се направи автоматично чрез подходящо задаване на dbtype (както Rocket отбелязва по-долу).
mysqli
в конфигурацията на CodeIgniter. След това ще използва функциите на mysqli вместо тези на mysql.
- person Rocket Hazmat; 15.02.2012
опитайте php-activerecord Вярвам, че PDO драйверът на тази употреба е просто включване и пускане чрез искри.
Просто продължение на всеки, който има същия проблем (включително моето бъдеще), моля, уверете се, че който и dbdriver да зареждате, има правилната библиотека, заредена в php.ini
$db['default']['dbdriver'] = 'mysqli'; //MySQLi <-- mysqli.dll
$db['default']['dbdriver'] = 'mysql'; //MySQL <-- mysql.dll
$db['default']['dbdriver'] = 'pdo'; //PDO <-- pdo.dll
Неуспешното зареждане на правилния dll ще доведе до отказ на CodeIgniter с празна страница.
mysql_*()
функции? - person Mike B   schedule 15.02.2012mysqli_*
. Те имат PDO драйвер, който вие може да използва. РЕДАКТИРАНЕ 2: Вижте този въпрос. - person Rocket Hazmat   schedule 15.02.2012CI_Database
) със специфична за db функционалност, внедрена в драйвери. Драйверът MySQL използваmysql_*
. Има и драйвериMySQLi
иPDO
. Нито един от тях не използва подготвени изрази, тъй като екранирането на заместител на параметър вече се извършва от CI. - person Francis Avila   schedule 15.02.2012