Интеграция Codeigniter PDO - PullRequest
       11

Интеграция Codeigniter PDO

6 голосов
/ 05 января 2012

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

$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: если вы беспокоитесь о том, зачем мне нужен pdo в ci, мой босс хочет, чтобы я создал структурированную среду с:

  1. CI 2.x + (сделано)
  2. Смарт 3 (сделано)
  3. PhpUnit (пока нет)
  4. PDO (пока нет)

поэтому, если у вас есть какие-либо советы по интеграции phpunit, не стесняйтесь ответить. Ты заранее

Ответы [ 2 ]

8 голосов
/ 16 марта 2013

Вам нужно немного изменить конфигурацию:

'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

8 голосов
/ 05 января 2012

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

Вы можете создавать стандартные запросы, явно написав запрос, или вы можете использовать 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 . Я видел массу тем по интеграции PHPUnit с CodeIgniter.

...