#php #mysql #mysqli #phpmyadmin #wamp
#php #mysql #pdo #phpmyadmin
Вопрос:
Я использую PDO для подключения к базе данных MySQL. Я не могу подключиться к какой-либо базе данных, которую я создаю, хотя я могу подключиться к уже созданным базам данных (уже созданным по умолчанию). Я использую сервер wamp.
<?php
try{
$dbh=new PDO("mysql:host=localhost;dbname=mydata","root","");
}catch(Exception $e){
die("ERROR: Couldn't connect. {$e->getMessage()}");
}
?>
Если я заменю mydata на mysql, который является ранее созданной базой данных на сервере wamp, то код работает отлично. Единственная проблема связана с базами данных, которые я создаю. Я попытался предоставить mydata те же привилегии, что и базе данных mysql, но это не сработало.
Комментарии:
1. Вы подключаетесь к тому же экземпляру mysql, что и ваш phpmyadmin?
2. @LuckyGrewal. Я полагаю, что люди голосуют против, потому что вы не помогаете сузить проблему, например, вы должны поместить сообщение об ошибке, которое вы получаете. Ответ на этот вопрос может быть любым (кстати, я не отрицал вас :))
Ответ №1:
Это либо орфографическая ошибка, либо PHP-код, и phpmyadmin просто использует разные учетные данные базы данных. Это может произойти, например, если на вашем компьютере установлено несколько серверов баз данных.
Чтобы получить доказательство, выполните следующий запрос в phpmyadmin:
show databases;
А затем запустите тот же запрос в PDO:
$host = 'your db host';
$user = 'your db username';
$pass = 'your db password';
$pdo = new PDO("mysql:host=$host", $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$databases = $pdo->query('show databases')->fetchAll(PDO::FETCH_COLUMN);
var_dump($databases);
или mysqli
$host = 'your db host';
$user = 'your db username';
$pass = 'your db password';
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect($host, $user, $pass);
$databases = $mysqli->query('show databases')->fetch_all();
var_dump($databases);
и сравните результат. Это покажет вам, что либо произошла орфографическая ошибка, либо действительно phpmyadmin и PHP подключены к разным серверам баз данных.
Затем вы можете проверить файл конфигурации в phpMyAdmin, чтобы убедиться, что он подключается к нужному серверу