为什么我们不能使用:key => CodeIgniter的DB库中的值?

时间:2011-07-02 20:06:21

标签: mysql codeigniter pdo

我曾经常常使用常规PHP的PDO:

$data = array(
    ":name" => "james",
    ":location" => "Palo Alto, CA"
);

SQL:

SELECT * FROM people WHERE name LIKE :name and location = :location

当我开始使用Codeigniter时,它不再允许我使用命名空间键,它只接受传统的?标记。

无论如何要解决这个问题?

2 个答案:

答案 0 :(得分:2)

不幸的是,没有,没有。不是本身的CodeIgniter。

有助于记住CodeIgniter的根源是符合PHP4的代码(他们所做的一些事情甚至不是最新的PHP 4 - 他们使用的自定义文件搜索系统比glob慢得多这是PHP 4.3(4.4?它是最低要求的版本),这意味着旧的'?'是当时最好的选择。

如果您对使用较新的样式感觉更好,那么最好使用PDO类。无论如何,它们更好更快。 (坦率地说,我只使用CI的DB类来实现合规性。我非常偏爱PDO,特别是因为所有现代框架似乎都使用它们)。但是,我会警告你,PDO的使用完全使CodeIgniter提供的ActiveRecord框架无效。您将无法使用$this->db->select()->from('table')->where($array)->limit(1,4);更重要的是,您需要了解SQL的不同方言之间的差异,CodeIgniter允许您避免(并且您的代码将不再与DB无关)。

答案 1 :(得分:1)

也许你会更习惯在Codeigniter中使用Active Record并做类似

的事情
$this->db->like();

请看这里:http://codeigniter.com/user_guide/database/active_record.html