我曾经常常使用常规PHP的PDO:
$data = array(
":name" => "james",
":location" => "Palo Alto, CA"
);
SQL:
SELECT * FROM people WHERE name LIKE :name and location = :location
当我开始使用Codeigniter时,它不再允许我使用命名空间键,它只接受传统的?标记。
无论如何要解决这个问题?
答案 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