Почему пишет ошибку Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user 'user'@'localhost' (using password: YES)' через mysqli всё нормально PHP: $connect = mysqli_connect('localhost', 'user', '123', 'test_blog'); а через pdo нет PHP: $pdo = new PDO('mysql:host=localhost; dbname=test_blog; charset=utf8', 'user', '123'); Я узнал, что не поддерживает, если имя бд написано верблюдом и через _ и вообще я не понимаю, подключается почему-то только одна БД из всех, что у меня есть, для остальных пишет Unknown database Я переименовал эту БД и теперь в неё тоже не пускает Может переустановить openserver? ему уже 2 года
PHP: Class SQL { const HOST = 'localhost'; const DB_NAME = 'blogpric_base'; const USER = 'root'; const PASSWORD = ''; protected static $INSTANCE = NULL; public static function instance() { if ( self::$INSTANCE === NULL ) { self::$INSTANCE = new PDO( 'mysql:host=' . self::HOST . ';dbname=' . self::DB_NAME . ';charset=UTF8', self::USER, self::PASSWORD ); self::$INSTANCE -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); self::$INSTANCE -> exec ( 'set names utf8' ); } return self::$INSTANCE; } public static function __callStatic( $method, $args ) { return call_user_func_array ( array ( self::instance(), $method ), $args ); } public static function P( $sql, $args = [] ) { $stmt = self::instance() -> prepare( $sql ); $stmt -> execute( $args ); return $stmt; } } --- Добавлено --- почему? PHP: exec ( 'set names utf8' ); Россия (с) хостинги они такие..
Код (Text): 'mysql:host=localhost; dbname=test_blog; charset=utf8' за точкой запятой, попробуй убери пробелы и попробуй. Я не уверен, это предположение.