2012-01-05 70 views
5

我在网上做了大量的研究,但我没有找到任何可以帮助我在codeigniter中使用PDO的东西。我看到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提示!!!!你已经帮了我很多,我已经失去了几个小时寻找phpunit smth,但我只找到旧的ci图书馆等...关于pdoü对,我不明白为什么,但在家里它的工作正常,但在工作更紧密 - >查询或AR似乎工作,我应深入调查。但ty再次XD – th3n3rd 2012-01-05 18:09:17

+1

我用xdebug来跟踪什么时候我做了什么调用活动记录或查询方法,并在这两种情况CI不使用pdo“准备”声明大声笑...什么是使用pdo驱动程序的优点,如果CI不'在里面使用pdo函数!!!我想特别使用pdo,因为它有一个查询绑定方法(不像codeigniter一个)。 – th3n3rd 2012-01-09 10:06:55

+0

这是超旧的,但一定要准备查询。 http://ellislab.com/forums/viewthread/218455/ – RaGe10940 2013-02-12 12:56:29

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 2013-03-16 08:08:20

+2

注意并更新 – jmadsen 2013-03-16 08:13:34