2010-06-20 2 views
1

Можно создать дубликат:
PHP PDO vs normal mysql_connectДоступ к БД через функцию против объекта, разницу?

Так в моем приложении, я получил доступ к базе данных с помощью функции с именем db_connect() ;. Весьма просто, он подал необходимую регистрационную информацию и открыл соединение с базой данных через mysql_connect и mysql_select_db.

Теперь, когда я работаю, я обнаружил, что ведущий программист использует PDO. Fancy. Тем не менее, он выглядит более или менее как объектно-ориентированная версия того же самого, что я использовал.

Так в чем же разница между тем, как я это делал, или написанием класса «db» с помощью конструктора, который автоматически соединяется с базой данных?

В обоих случаях мне нужно будет подключиться к db/create новому объекту, который в любом случае занимает одну строку.

Это фантастическая библиотека, чтобы абстрагироваться от ничтожных связей с базой данных?

Единственное, что я могу думать о том, что есть деструктор в версии OO, что означает, что я не должен был бы код в «db_close()» ...

Edu-ма-Cate меня ! (Please'm)

ответ

4

Независимо от того, является ли ваша библиотека базы данных функциональной или объектно-ориентированной, она не очень актуальна сама по себе, но PDO очень современна и имеет ряд преимуществ по сравнению с обычными старыми mysql_connect() и сущностью, наиболее важными параметризованными запросами, которые делают SQL инъекции невозможны.

Также PDO поддерживает a whole lot more database platforms.

С точки зрения архитектуры подход ООП также имеет смысл, это больше, чем просто украшение: вы создаете объект PDO, который является вашим соединением с базой данных. Несколько объектов = несколько соединений. Обтекание результирующего набора в объект - предоставление всех функций для извлечения строк, пропусков, перемотки назад и т. Д. Также очень логично.

Если бы я должен был выбрать оболочку базы данных для нового проекта, я бы определенно пошел с PDO за mysql_*().

+0

Спасибо за ваши мысли, Pekka :) –

+0

+1 PDO - это определенно путь. На mysql _ *() есть больше кривой обучения, но она стоит для параметризованных запросов, если ничего другого. –

Смежные вопросы