Помощь по скриптам | PDO
Тема закрыта by
Nemos
Причина: Решено
Причина: Решено
Можно ли сделать 2 подключения ПДОк базе обычное и функцией?
Да хоть десять. Плюс ещё и MySql с MySqi.
Кинь пример как хочешь подключить.
Кинь пример как хочешь подключить.
Вот родное подключение . А мне нужно сделать под этот шаблон но чёт вылетает ошибка в хосте в бд!
________
посл. ред. 13.10.2020 в 22:44; всего 1 раз(а); by Nemos
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.
Кинь пример как хочешь подключить.
Да хоть десять. Плюс ещё и 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 откуда берется?
Все конфиги бд нужно прокинуть в метод класса, как аргументы
А переменная $sys откуда берется?
Все конфиги бд нужно прокинуть в метод класса, как аргументы
Ето твоя cms.. можешь помочь?
rekmixa (13.10.2020 в 22:59)
А переменная $sys откуда берется?
Все конфиги бд нужно прокинуть в метод класса, как аргументы
А переменная $sys откуда берется?
Все конфиги бд нужно прокинуть в метод класса, как аргументы
Это на RCMS15 пишу соцсеть...
Nemos , Код ошибки скинь. Да и что это за класс такой кривой? Вот по проще.
________
посл. ред. 13.10.2020 в 23:16; всего 2 раз(а); by TuT
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