9
votes

I have been trying to connect to MySQL from PHP using PDO. However, I get this error message:

PHP Fatal error: Uncaught PDOException: could not find driver in /home/abdullah/Documents/projects/cs50_radio/public/test.php:5 Stack trace: #0 /home/abdullah/Documents/projects/cs50_radio/public/test.php(5): PDO->__construct('mysql:host=127....')

PDO is enabled and installed. I checked phpinfo(), but I can't figure out the error.

Here is my code used to connect:

<?php
    $user = "root";
    $pass = "root";

    $dbh = new PDO("mysql:host=127.0.0.1;dbname=radio;port=3306", $user, $pass);
    //$dbh->query('INSERT INTO users (name) VALUES ("abdullah")');
    $dbh = null;
?>

Should my project folder contain any additional drivers or files? Or am I missing something in my code?

4
new PDO("mysql:host=127.0.0.1;dbname=radio", $user, $pass); - WM-SH-PD-TV-FC
Hi, are you sure the mysql driver is loaded ? Can you check in your php.ini ? The driver line must be uncommented - Max
which line is that? - A.Emad
You should have extension=php_pdo_mysql.dll and not ;extension=php_pdo_mysql.dll (no semi colon) - Max

4 Answers

14
votes

To use different drivers you need to install them. On Windows you simply uncomment a line in php.ini:

extension=php_pdo_mysql.dll

On Linux you install the extension with the package manager:

sudo apt install php7.1-mysql
6
votes

I had the same problem, resulting from some incompatibility (not immediately evident) between the Apache and PHP versions I had downloaded. Try writing a toy PHP script that simply creates a new PDO object, - something like:

<?php

$dbname   = 'mydb';
$username = 'myuser';
$password = 'mypassword';
try {
    $pdo = new \PDO("mysql:host=localhost;dbname=$dbname", $username,  $password);
} catch (Exception $e) {
    print $e->getMessage() . "\n";
}
print "OK\n";

Then run that script from the command line. If you don't get the 'could not find driver' error message, then that points to an incompatibility between your PHP and Apache versions.

3
votes

In my PHP 7.4 I didn't get php.ini. Instead, I have php.ini-development and php.ini-production. So, I have created a new php.ini file only and copied the configurations into it.

Then I have uncommented and changed the extension directory to the full installation path.

 extension_dir = "C:/php/ext"

And uncommented:

 extension=pdo_mysql
0
votes

Ok, somehow I had a problem with the extension itself. It helped to reinstall the MySQL extension. Here an example for PHP 7.3:

sudo apt purge php7.3-mysql
sudo apt install php7.3-mysql
sudo service apache2 restart