2012-01-05 3 views
5

Я много исследовал в Интернете, но я не нашел ничего, что могло бы помочь мне использовать PDO в кодеригенере. Я видел в изменении LI CI 2.1.0 (я думаю), что драйвер pdo был добавлен в фреймворк. я в конечном итоге теперь конфигурационный файл database.php который выглядит следующим образом:Интеграция Codeigniter PDO

$db['default']['hostname'] = 'mysql:host=myhostname;port=myport'; 
$db['default']['username'] = 'myusername'; 
$db['default']['password'] = 'mypassword'; 
$db['default']['database'] = 'mydb'; 
$db['default']['dbdriver'] = 'pdo'; 

Так что теперь (после того, как много потраченного время, чтобы получить фрагмент кода выше, чтобы работать -.-) я не получаю никакой ошибки о связи , но КАК ВЫПОЛНИТЬ ЗАПРОС СЕЙЧАС? я не могу понять, какой синтаксис будет работать и как строить запросы. У кого-нибудь есть намеки?

PS: если вы wordering о том, почему мне нужно PDO в Х, ответ мой босс хочет, чтобы я создать структурированное с состоянием происходит:

  1. CI 2.x + (сделано)
  2. Smarty 3 (сделано)
  3. PHPUnit (не)
  4. PDO (пока не)

так что если у вас есть какие-то намеки также для интеграции PHPUnit чувствует себя свободным, чтобы ответить. Ty заранее

ответ

7

Вы используете PDO так же, как и любой другой драйвер базы данных в CodeIgniter. Если вы все еще не уверены, я бы рекомендовал прочитать документацию на Database Class.

Вы можете выпускать стандартные запросы путем явного написания запроса, или вы можете использовать Active Record Class (это скорее построитель запросов).

Вот некоторые примеры:

// Standard query 
$results = $this->db->query('SELECT name, title, email FROM my_table'); 

// Active record 
$this->db->select('name, title, email'); 
$results = $this->db->get('my_table'); 

Что касается интеграции PHPUnit, взглянуть на https://github.com/cmillr/CI-PHPUnit (я не проверял это сам) или посмотреть вокруг CodeIgniter forums. Я видел массу вопросов по интеграции PHPUnit с CodeIgniter.

+0

действительно TY для PHPUnit намека !!!! вы мне очень помогли, я потерял много часов на поиск smth для phpunit, но я нашел только старые библиотеки ci и т. д. ... о pdo u right, я не знаю почему, но дома его работы прекрасны, но при работе подряд - > запрос или AR, похоже, работают, я должен глубоко исследовать. Однако снова введите XD – th3n3rd

+1

Я использовал xdebug для отслеживания того, что делает CI, когда я вызываю как активные записи, так и метод запроса, и в обеих ситуациях CI не использует pdo «подготовить» оператор lol ... каковы преимущества использования драйвера pdo, если CI dont ' использование pdo функция внутри !!! Я хочу использовать pdo, в частности, потому что у него есть метод привязки запроса (не как codeigniter one). – th3n3rd

+0

Это супер старый, но обязательно подготовьте запрос. http://ellislab.com/forums/viewthread/218455/ – RaGe10940

8

Вы должны изменить свой конфиг немного:

'dsn' => 'mysql:host=localhost;dbname=codeigniter', 
//'hostname' => 'localhost', 
'username' => 'codeigniter', 
'password' => 'codeigniter', 
'database' => 'codeigniter', 

Заметьте, что мы используем DSN, а не имя хоста.

После этого, просто использовать ваш $this->db-> как вы всегда делаете - водитель PDO будет переводить все на методы PDO

немного устарели, но тема не хватает четких разъяснений & документы, так что я написал - надеюсь, что это помогает прояснить для людей:

http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

+1

Одинокая ссылка считается плохим ответом (см. [faq # deletion]), поскольку она бессмысленна сама по себе, и ** целевой ресурс не гарантированно будет жить в будущем **. [Было бы желательно] (http://meta.stackexchange.com/q/8259) включить здесь основные части ответа и предоставить ссылку для справки. – j0k

+2

отмечено и обновлено – jmadsen

Смежные вопросы