Codeigniter PDO 集成

Posted

技术标签:

【中文标题】Codeigniter PDO 集成【英文标题】:Codeigniter PDO integration 【发布时间】:2012-02-03 08:41:57 【问题描述】:

我在网上做了很多研究,但我没有找到任何可以帮助我在 codeigniter 中使用 PDO 的东西。我在 CI 2.1.0(我认为)的更改 lof 中看到 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';

所以现在(在浪费了很多时间让上面的 sn-p 工作之后 -.- )我没有收到有关连接的错误,但是现在如何执行查询?我无法弄清楚什么语法会起作用以及如何构建查询。有人有提示吗?

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

    CI 2.x +(完成) Smarty 3(完成) PhpUnit(还没有) PDO(还没有)

因此,如果您对集成 phpunit 也有任何提示,请随时回答。提前提

【问题讨论】:

【参考方案1】:

您使用 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 集成的主题。

【讨论】:

真的很适合 phpunit 提示!!!你帮了我很多,我在寻找 phpunit 的 smth 上浪费了几个小时,但我只找到了旧的 ci 库等……关于 pdo 你是对的,我不知道为什么,但在家里它工作得很好,但在附近工作 - >查询或AR似乎有效,我应该深入调查。但是再次ty XD 我使用 xdebug 来跟踪当我调用活动记录或查询方法时 CI 所做的事情,并且在这两种情况下 CI 不使用 pdo“准备”语句大声笑……如果使用 pdo 驱动程序有什么好处? CI 不要在里面使用 pdo 函数!!!我特别想使用 pdo,因为它有一个查询绑定方法(不像 codeigniter 方法)。 这太老了,但一定要准备好查询。 ellislab.com/forums/viewthread/218455 以前PDO有问题吗? (例如在 Active Records 和所有中)这是否有任何特定版本的 CI 可以使用?【参考方案2】:

你需要稍微改变你的配置:

'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

【讨论】:

单独的链接被认为是一个糟糕的答案(请参阅faq),因为它本身没有意义,并且不能保证目标资源在未来仍然存在。 It would be preferable 在这里包含答案的基本部分,并提供链接以供参考。

以上是关于Codeigniter PDO 集成的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter框架连接读取MS Access数据库文件

如何在 codeigniter 3 中使用 PDO

如何在codeigniter普通mysql和自定义pdo中运行并发数据库连接[重复]

CodeIgniter PDO 数据库驱动程序不工作

在codeigniter中逃避足够的防止sql注入的保护

将 Twig 与 CodeIgniter 4 集成