страна

регион

город

Как это реализовано (далее...)

Сделали социальную сеть по Ростехнадзору на основе 3-51 за 2 недели. Ресурс создан для общения экспертов по промышленной безопасности, работников Ростехнадзора и МЧС РФ, поставщиков оборудования и всех, кто интересуется вопросами промышленной безопасности.

Теперь вкратце на чем работает сайт:

  1. PHP (ООП)
  2. MySQL (InnoDB)
  3. Perl – отправка почты
  4. шаблонизатор Blitz
  5. библиотека DbSimple – интерфейс к БД
  6. библиотека JsHttpRequest – Ajax (в будущем перейдем на jQuery)

DbSimple - библиотека, реализующая единый интерфейс доступа к разным СУБД и включает в себя некоторое количество улучшений, упрощающих работу с СУБД.

Основные возможности

  • Поддержка PHP 4 и 5, СУБД: MySQL, PostgreSQL и InterBase/FireBird.
  • Простой и лаконичный интерфейс (см. примеры ниже).
  • Функции непосредственной выборки: всего результата, строки, столбца, ячейки, ассоциативного массива, многомерного массива, связанного дерева.
  • Поддержка различных видов placeholder-ов (параметров запроса): списковый, ассоциативный, идентификаторный
  • Код библиотеки весьма компактен: один файл - базовый класс, один файл - драйвер конкретной СУБД.

и многое другое!

Основным недостатком традиционного подхода является разделение операций "выполнение запроса" и "получение результата запроса". Например необходимо получить список email пользователей со статусом 2

Традиционный подход
$rusult = $mysqli->query('SELECT email FROM user WHERE status='.$status);
$email_array = array();
while ($email = $rusult->fetch_assoc()) {
      $email_array = $email['email'];
}

DbSimple
$email_array = $DB->selectCol('SELECT email FROM user WHERE status=?d', $status);

'SELECT email FROM user WHERE status='.$status - уязвим для sql-иньекций, если не проверить переменую $status
'SELECT email FROM user WHERE status=?d' - ?d это как раз и есть placeholder. Вместо него подставляется $status как целое число. Нам не нужно заморачиваться с проверкой - это сделает библиотека.

Это далеко не все возможности DbSimple. Более подробно в официальной документации
p.s. Около года использую эту библиотеку. Очень доволен