Если вы планируете создать класс базы данных, возможно, стоит задуматься о том, чтобы сделать его одноэлементным, что позволит вам использовать его без объявления / создания, как ...
global $db;
$db = new db;
$db->query ('... sql ...');
является излишним, когда вы можете сделать
db::query ('... sql ...');
У меня есть набор функций SQL, которые я использую почти на регулярной основе, чтобы свести то, что раньше было многострочным экранированным участком SQL, к одному вызову, например:
get_element ($table, $element, $value, $column='id');
get_row ($table, $value, $column='id');
Так что, если вы просто хотите получить имя из таблицы «клиенты», где идентификатор равен 4, вы:
$name = db::get_element ('customers', 'name', 4);
Существуют также сопутствующие функции query_element и query_row, где вы просто передаете ей строку SQL, и она возвращает один элемент / строку.
Наряду с функциями вставки / обновления, например
$array = array (
'name' => 'bob jones',
'age' => 28
);
$insert_id = db::insert_array ('customers', $array);
$customer_details = db::get_row ('customers', $insert_id);
$customer_details['age'] = 30;
db:update_array ('customers, $customer_details);
Создает новую строку, извлекает детали обратно, обновляет возраст, а затем перезаписывает его в базу данных.
Создание пользовательских модулей доступа SQL для каждой таблицы, как правило, ошибка, которую я всегда обнаруживал - лучше всего просто выполнить общий запрос к базе данных, используя разумные функции.
Если вам нужно что-то использовать со сложными объединениями, то всегда лучше создать для него функцию, например, getCustomerInfo (), но если вы просто хотите получить общий поиск по табличным значениям, создание множества пользовательских методов просто увеличивает вероятность ошибок в одном из них. Плюс экранирование данных очень важно - если вы можете использовать не-sql как можно больше и использовать его с помощью нескольких основных функций, вы можете убедиться, что все правильно экранировано довольно легко.
Если вы хотите посмотреть на мой пользовательский класс базы данных, дайте мне знать.