【问题标题】:Codeigniter PDO integrationCodeigniter PDO 集成
【发布时间】: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,答案是我的老板希望我创建一个结构化的环境:

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

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

【问题讨论】:

    标签: database codeigniter 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 在这里包含答案的基本部分,并提供链接以供参考。
    猜你喜欢
    • 2017-06-14
    • 2023-03-23
    • 2013-07-23
    • 1970-01-01
    • 2020-02-28
    • 2011-01-11
    • 2011-05-24
    • 2017-12-30
    • 2016-09-03
    相关资源
    最近更新 更多