You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
2.8 KiB

  1. <?php
  2. /**
  3. * Класс базы данных.
  4. * Возвращает идентификатор соединения
  5. *
  6. * @copyright
  7. * @link
  8. * @package Majestic
  9. * @subpackage DB
  10. * @since
  11. * @version SVN: $Id$
  12. * @filesource $URL$
  13. */
  14. class DBConnector
  15. {
  16. static private $handlers = array();
  17. static public $queries = array();
  18. /**
  19. * Запрещаем new и клонирование
  20. */
  21. private function __construct(){}
  22. private function __clone(){}
  23. /**
  24. * Получение соединения.
  25. * Если соединение с такими параметрами уже есть - новое не создается.
  26. *
  27. * @param array $db_settings - массив настроек
  28. * @return resource - идентификатор соединения
  29. */
  30. static public function getConnect($db_settings)
  31. {
  32. $handler_name = self::getConnectionName($db_settings);
  33. if (isset(self::$handlers[$handler_name])) {
  34. return self::$handlers[$handler_name];
  35. }
  36. if (!$handler = mysqli_connect($db_settings['host'], $db_settings['user'], $db_settings['password'], $db_settings['database'])) {
  37. throw new MJException('Can\'t connect to DB '.mysqli_connect_error(), 2);
  38. }
  39. self::query($handler, "SET NAMES 'utf8'"); //cheat!!!
  40. return self::$handlers[$handler_name] = $handler;
  41. }
  42. static protected function getConnectionName($db_settings)
  43. {
  44. return $db_settings['host'] . '-' . $db_settings['database'];
  45. }
  46. /////////
  47. static public function query($handler, $sql)
  48. {
  49. return mysqli_query($handler, $sql);
  50. }
  51. static public function escape($handler, $str)
  52. {
  53. return mysqli_real_escape_string($handler, $str);
  54. }
  55. static public function error($handler)
  56. {
  57. return mysqli_error($handler);
  58. }
  59. static public function free($result)
  60. {
  61. return mysqli_free_result($result);
  62. }
  63. static public function fetchObject($result, $class_name = false)
  64. {
  65. return $class_name ? mysqli_fetch_object($result, $class_name) : mysqli_fetch_object($result);
  66. }
  67. static public function numRows($result)
  68. {
  69. return mysqli_num_rows($result);
  70. }
  71. static public function affectedRows($handler, $result)
  72. {
  73. return mysqli_affected_rows($handler);
  74. }
  75. static public function getId($handler)
  76. {
  77. return mysqli_insert_id($handler);
  78. }
  79. static public function autocommit($handler, $switch)
  80. {
  81. return mysqli_autocommit($handler, (bool) $switch);
  82. }
  83. static public function commit($handler)
  84. {
  85. return mysqli_commit($handler);
  86. }
  87. static public function rollback($handler)
  88. {
  89. return mysqli_rollback($handler);
  90. }
  91. }
  92. ?>