Почему мы не можем использовать: key => value в библиотеке БД CodeIgniter? - PullRequest
0 голосов
/ 03 июля 2011

Я использовал что-то подобное с обычным PDO PHP:

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

SQL:

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

Когда я начал использовать Codeigniter, он не позволит мне больше использовать ключи пространства имен, он принимает только традиционные? знаки.

В любом случае, чтобы это исправить?

Ответы [ 2 ]

2 голосов
/ 03 июля 2011

К сожалению, нет, нет.Не с CodeIgniter изначально.

Помните, что корни CodeIgniter находятся в PHP4-совместимом коде (и некоторые из вещей, которые они сделали, даже не являются самыми последними PHP 4 - они используют пользовательскую систему поиска файлов, котораясущественно медленнее, чем glob, который был в PHP 4.3 (4.4? Это было около минимальной требуемой версии), это означает, что старый '?' был действительно лучшим вариантом в то время.

Если вылучше использовать новый стиль, тогда вам может быть лучше использовать классы PDO . В любом случае, они лучше и быстрее. (Честно говоря, я использую только классы БД CI для соответствия. У меня очень сильныйпредпочтение PDO, особенно если учесть, что все современные фреймворки их используют). Однако я предупреждаю вас, что использование PDO полностью делает недействительным фреймворк ActiveRecord, предлагаемый CodeIgniter. Вы не сможете использовать $this->db->select()->from('table')->where($array)->limit(1,4); Более важновам нужно знать разницу между разными диалектами SQL, что-тоCodeIgniter позволяет вам избежать (и ваш код больше не будет зависеть от БД).

1 голос
/ 03 июля 2011

Возможно, вам будет удобнее использовать Active Record в Codeigniter и делать что-то вроде

$this->db->like();

Смотрите здесь: http://codeigniter.com/user_guide/database/active_record.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...