php7.2 и PDO - 'не мог найти драйвер'

в первую очередь: Система Ubuntu 16.04 Apache2 PHP 7,2 дБ: MySQL

теперь следующая проблема: у Меня есть два проекта, первый проект является просто php файлом со следующим кодом

<?php
$servername ='localhost';
$username = 'root';
$password = '12345';
$dbname = 'test';
try {
   $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   do stuff ...
} 
catch(PDOException $e) {
   echo $e->getMessage();
}

Это хорошо работает, я могу соединиться с базой данных и получить желаемые данные.

Теперь я хотел сделать это немного отличающийся:

<?php

class Database {
    // DB Params
    private $host = 'localhost';
    private $db_name = "test";
    private $username = "root";
    private $password = "12345";
    private $conn;

    // DB Connect
    public function connect() {
        $this->conn = null;
        echo "connect() - ";
        try {
            $this->conn = new PDO('myqsl:host=' . $this->host . ';dbname=' . $this->db_name, $this->username, $this->password);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


        } catch(PDOException $e) {
            echo 'HEY! Connection Error: ' . $e->getMessage();
        }

        return $this->conn;
    }
}

Теперь здесь я получаю следующую ошибку:

не мог найти драйвер

Я пытаюсь в течение многих часов найти решение, но без успеха. Это работает, но не в классе?....

0
задан 26 October 2018 в 08:27

2 ответа

ПРЕДУПРЕЖДЕНИЕ! я падаю в подобной ошибке, когда я пытаюсь повредить строку подключения в строках кратных чисел и проиграл, 2 ч, также пробуя переустанавливают драйверы и конфигурацию:

define('DB_HOST',     'localhost');
define('DB_BASE',     'mydb');
define('DB_USER',     'root');
define('DB_PASSWORD', 'root');

try {
    $conn = new PDO('
    mysql:host=' . DB_HOST . ';dbname=' . DB_BASE . ';charset=utf8mb4',
     DB_USER, DB_PASSWORD);
    $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch(PDOException $e){
    print 'Error!: ' . $e->getMessage() . PHP_EOL;
}

, Что throwns PDOException: не мог найти драйвер.

проблема я нашел со строкой подключения: СТРОКА ПОВРЕЖДЕНИЯ + mysql:host... отличается от mysql:host...

Решение: Просто поместите 'рев как этот затем Вы не повреждение строки подключения:

try {
    $conn = new PDO(
    'mysql:host=' . DB_HOST . ';dbname=' . DB_BASE . ';charset=utf8mb4',
     DB_USER, DB_PASSWORD);
    $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch(PDOException $e){
    print 'Error!: ' . $e->getMessage() . PHP_EOL;
}
0
ответ дан 27 October 2019 в 06:51

Это была просто опечатка... в классе, который это

myqsl

вместо

mysql

0
ответ дан 27 October 2019 в 06:51

Другие вопросы по тегам:

Похожие вопросы: