Собственно вопрос в следующем... Уважаемые господа, скажите пожалуйста: 1) Какие средства доступа к БД вы используете в своей повседневной работе (может классы от PEAR, или куски библиотек каких-либо или же свои самописные классы/набор функций доступа) ??? 2) Используете ли вы placeholder'ы?? 3) Если вы используете свои самописные или чужие классы, то присутствуют ли в них средства логирования ошибок MySQL - если присутсвуют то на каком уровне?? 4) Что скажите насчет библиотеки DbSimple Дмитрия Котерова ?? (http://dklab.ru/lib/DbSimple/)
1. Свои. 2. Несомненно. 3. Реализованно в виде регистрации в классе метода-обработчика ошибок. 4. Когда она еще не была DbSimple, а лишь DbPlaceholder нравилась больше. Но и сейчас вещь неплохая.
Вот именно, что просто обёртка с парой автоматизаций и некоторыми настройками. А зачем городить огород из собственных функций с узкой специализацией, малой масштабируемостью и гибкостью, но зато абсолютно абстрактных и как таковой SQL-запрос писать то вроде и не надо, он же сам составляется, а производительность падает, да и удобство сомнительное. Так и SQL забыть можно. Запрос и результат запроса должны собираться и разбираться ручками, а не супер классом. Достаточно имеющихся в PHP функций для работы с БД и всё. ИМХО конечно.
1). MySQLi & MySQL, никаких библиотек 2). Стараюсь понемногу начинать юзать где есть MySQLi 3). Нет 4). Скажу, что любая библиотека, в которой команда выборки с базы возращает не ссылку на результат, а уже набранным массив - идиотизм. Лично я считаю что PLAIN SQL самое оно. В моей работе простейшие запросы, которые могут быть реализованы методами $db->select($table, $fields, $where, $limit) составляют ~5-10%. Всё остальное слишком сложно и возможно только будучи написано руками.
1. Огород с абстракциями нужен мне, ибо работаю регулярно и с Oracle и с MySQL. В разумных рамках, SQL я не мигрирую, естественно. Но класс-обертка помогает минимизировать сложность портирования частей программного кода. По поводу 4 - согласен с Psih, да одним НО — у меня есть методы FetchValue, FetchArray и FetchAll для более удобного получения данных.