Codeigniter PDO集成

th3*_*3rd 6 database phpunit pdo codeigniter

我在网上做了很多研究,但我找不到任何可以帮助我在codeigniter中使用PDO的东西.我在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';
Run Code Online (Sandbox Code Playgroud)

所以现在(经过大量的浪费时间让上面的片段工作 - .-)我没有收到关于连接的错误,但是现在如何执行查询?我无法弄清楚什么语法将起作用以及如何构建查询.有人有提示吗?

PS:如果你想知道为什么我需要在ci中使用pdo,答案是我的老板要我创建一个结构化的环境:

  1. CI 2.x +(完成)
  2. Smarty 3(完成)
  3. PhpUnit(尚未)
  4. PDO(尚未)

因此,如果您还有任何集成的提示,phpunit随时可以回答.Ty提前

bir*_*ric 8

您使用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');
Run Code Online (Sandbox Code Playgroud)

至于集成PHPUnit,请查看https://github.com/cmillr/CI-PHPUnit(我自己没有测试过)或环顾CodeIgniter论坛.我已经看到了很多关于将PHPUnit与CodeIgniter集成的主题.


jma*_*sen 8

您需要稍微更改配置:

'dsn'   => 'mysql:host=localhost;dbname=codeigniter',
//'hostname' => 'localhost',
'username' => 'codeigniter',
'password' => 'codeigniter',
'database' => 'codeigniter',
Run Code Online (Sandbox Code Playgroud)

注意我们使用dsn,而不是主机名.

在那之后,只需$this->db->像往常一样使用你的方式- PDO驱动程序将把所有内容翻译成PDO方法

有点过时,但主题是缺乏明确的解释和文档所以我写了这个 - 希望它有助于澄清人:

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

  • 单独的链接被认为是一个糟糕的答案(请参阅[faq#deletion]),因为它本身毫无意义,并且**不能保证目标资源在未来仍然存在**。[最好](​​http://meta.stackexchange.com/q/8259) 在此处包含答案的基本部分,并提供参考链接。 (2认同)