Loading...
Можно ли сделать 2 подключения ПДОк базе обычное и функцией?
wtf
Да хоть десять. Плюс ещё и MySql с MySqi.
Кинь пример как хочешь подключить.
Вот родное подключение
php
   // Подключение к БД $connect = new PDO(      // Хост, имя базы, кодировка     'mysql:host=' . $sys['db']['db_host'] . ';dbname=' . $sys['db']['db_name'] . ';charset=utf8',      // Юзер     $sys['db']['db_user'],      // Пароль     $sys['db']['db_pass'],      // Атрибуты     [ /*         // Сообщения об ошибках         PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, */         // Выборка данных по умолчанию         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,          // Буферизованные запросы         PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,          // Эмуляция подготавливаемых запросов         PDO::ATTR_EMULATE_PREPARES => true      ]  );   
. А мне нужно сделать под этот шаблон
php
   <?php /* ------------------------------- Класс для работы с базой данных ------------------------------- */      CLASS DB {      //Объект PDO   PUBLIC STATIC $DB = NULL;      PUBLIC STATIC $ST = NULL;      //SQL запрос   PUBLIC STATIC $QUERY = '';      /*   --------------------------------------   Подключение драйвера PDO к базе данных   --------------------------------------   */      PUBLIC STATIC FUNCTION CONNECT($status = 1)   {     IF (!SELF::$DB) {              TRY {                  SELF::$DB = NEW PDO(           // Хост, имя базы, кодировка     'mysql:host=' . $sys['db']['db_host'] . ';dbname=' . $sys['db']['db_name'] . ';charset=utf8',      // Юзер     $sys['db']['db_user'],      // Пароль     $sys['db']['db_pass'],            ARRAY(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")         );                  SELF::$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);                } CATCH (PDOException $e) {                  IF ($status == 1){                      ECHO "Нет подключения к базе данных<br /><br />";           ECHO "Параметры ошибки:<br /> " . $e->getMessage();           ECHO "<hr>";                    }                }            }          RETURN SELF::$DB;        }      /*   --------------------------------------   Получение 1 строки из таблицы   --------------------------------------   */      PUBLIC STATIC FUNCTION GET_STRING($query, $param = ARRAY())   {          IF (SELF::CONNECT(0)){              SELF::$ST = SELF::CONNECT()->PREPARE($query);       SELF::$ST->EXECUTE((ARRAY) $param);              RETURN SELF::$ST->FETCH(PDO::FETCH_ASSOC);          }        }       /*   --------------------------------------   Получение всех строк из таблицы   --------------------------------------   */      PUBLIC STATIC FUNCTION GET_STRING_ALL($query, $param = ARRAY())   {          IF (SELF::CONNECT(0)){              SELF::$ST = SELF::CONNECT()->PREPARE($query);       SELF::$ST->EXECUTE((ARRAY) $param);              RETURN SELF::$ST;            }        }      /*   ------------------------------   Получение 1 столбца из таблицы   ------------------------------   */      PUBLIC STATIC FUNCTION GET_COLUMN($query, $param = ARRAY())   {          IF (SELF::CONNECT(0)){              SELF::$ST = SELF::CONNECT()->PREPARE($query);       SELF::$ST->EXECUTE((ARRAY) $param);              RETURN SELF::$ST->FETCHCOLUMN();            }        }      /*   ---------------------------   Добавление строки в таблицу   ---------------------------   */      PUBLIC STATIC FUNCTION GET_ADD($query, $param = ARRAY())   {          IF (SELF::CONNECT(0)){              SELF::$ST = SELF::CONNECT()->PREPARE($query);              RETURN (SELF::$ST->EXECUTE((ARRAY) $param)) ? SELF::CONNECT()->LASTINSERTID() : 0;            }        }      /*   -----------------------------------   Изменение/удаление строки в таблице   -----------------------------------   */      PUBLIC STATIC FUNCTION GET_SET($query, $param = ARRAY())   {          IF (SELF::CONNECT(0)){              SELF::$ST = SELF::CONNECT()->PREPARE($query);              RETURN SELF::$ST->EXECUTE((ARRAY) $param);            }        }      /*   ---------------------------------------------   Выполнение запроса в базу данных из SQL файла   ---------------------------------------------   */      PUBLIC STATIC FUNCTION GET_SQL_FILE($path_file)   {      $file = FILE_GET_CONTENTS($path_file);          $data = EXPLODE(';' , $file);          IF ($file){              FOREACH ($data AS $el){                  DB::GET_ADD($el);                }              RETURN 1;          }ELSE{              RETURN 0;          }        }  }    ?>   
но чёт вылетает ошибка в хосте в бд!
________
посл. ред. 13.10.2020 в 22:44; всего 1 раз(а); by Nemos
TuT (13.10.2020 в 22:16)
Да хоть десять. Плюс ещё и MySql с MySqi.
Кинь пример как хочешь подключить.

Выше
Вылетает ошибка что проблема тут в CLASS BD:
php
   // Хост, имя базы, кодировка     'mysql:host=' . $sys['db']['db_host'] . ';dbname=' . $sys['db']['db_name'] . ';charset=utf8',      // Юзер     $sys['db']['db_user'],      // Пароль     $sys['db']['db_pass'],   
А переменная $sys откуда берется?
Все конфиги бд нужно прокинуть в метод класса, как аргументы
rekmixa (13.10.2020 в 22:59)
А переменная $sys откуда берется?
Все конфиги бд нужно прокинуть в метод класса, как аргументы

Ето твоя cms.. можешь помочь?
rekmixa (13.10.2020 в 22:59)
А переменная $sys откуда берется?
Все конфиги бд нужно прокинуть в метод класса, как аргументы

Это на RCMS15 пишу соцсеть...
Nemos , Код ошибки скинь. Да и что это за класс такой кривой? Вот по проще.
php
   <? define('DB_HOST', 'localhost'); // сервер define('DB_NAME', ' '); // имя базы define('DB_USER', ' '); // пользователь T8k6Y6z8 define('DB_PASS', ''); // пароль define('DB_CHAR', 'utf8'); class MyPDO { public static $counter = 0;     protected static $instance = null; //      public function __construct() {}     public function __clone() {}      public static function instance()     {          if (self::$instance === null)         {             $opt  = array(                 PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,                 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',                 PDO::ATTR_EMULATE_PREPARES   => TRUE             ); try {             $dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset='.DB_CHAR;             self::$instance = new PDO($dsn, DB_USER, DB_PASS, $opt); } catch (PDOException $e) {      die('Ошибка подключения '. $e->getMessage());      }         }         return self::$instance;     }          public static function __callStatic($method, $args)     { if ($method == 'query' || $method == 'execute') static::$counter++;         return call_user_func_array(array(self::instance(), $method), $args);     }      public static function run($sql, $args = array())     { static::$counter++;         $stmt = self::instance()->prepare($sql);         $stmt->execute($args);         return $stmt;      } /*Пример на выборку данных*/  $sql = MyPDO::run("SELECT * FROM `users` WHERE `id` = ? LIMIT 1", array($user['id']))->fetch(); echo $sql['login']; /*На изменение таблиц */ MyPDO::run("UPDATE `users` SET `test` = ? WHERE `id` = ?", array(10,$user['id'])); } /*Вывод количества запросов*/ echo  MyPDO::$counter;   

________
посл. ред. 13.10.2020 в 23:16; всего 2 раз(а); by TuT
Онлайн: 5
Время:
Gen. 0.1185
(c) Bym.Guru 2010-2026