не подключается к БД SQLSTATE[3D000]

172
05 октября 2018, 12:00

Перенес сайт с одного хостинга на другой, на первом хостинге была одна БД, а на новом две. подключение к БД происходит, но при запросе к БД выдается эта ошибка:

    [host nufypet.kz] Backend fatal error: PHP Fatal error: Uncaught 
    PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
     in /var/www/vhosts/alevelcenter.kz/nufypet.kz/func.php:286\nStack 
trace:\n#0 /var/www/vhosts/alevelcenter.kz/nufypet.kz/func.php(286): PDO->prepare('SELECT 
    * FROM u...')\n#1 {main}\n thrown in /var/www/vhosts/alevelcenter.kz
    /nufypet.kz/func.php on line 286\n, referer: http://nufypet.kz/register.php

UPDATE

исправил вот так, но ошибка осталась:

$db = PDO->execute("USE $dbname");
$stmt = $db->prepare(" SELECT * FROM users WHERE email = :email LIMIT 1");
$stmt->execute(array('email' => $email));

вот так выглядит подключение:

$dbhost = "localhost";
$database= "";
$dbuser = "";
$dbpass = "";
$db = new PDO("mysql: dbname =$database; host = $dbhost; charset = utf8",$dbuser,$dbpass);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec("set names utf8");
header('Content-Type: text/html; charset=utf-8');
mb_internal_encoding('utf8');
date_default_timezone_set('Asia/Almaty');
Answer 1

Там где у вас происходит подключение к базе данных, установите ее название

$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
Answer 2

Я задавался вопросом по этой проблеме и на английском StackOverflow. Проблема была решена так:

$stmt = $db->prepare("SELECT * FROM `dbname`.`table` WHERE email = :email LIMIT 1");

надо было взять в обратные кавычки названия БД и таблиц. Вот ссылка на мой вопрос и крайне полезная ссылка по теме.

READ ALSO
Работа со списком и запись его в файл

Работа со списком и запись его в файл

Наподобие такого наверное (правда Вам это не поможет скорее всего, написал за два часа - куча багов, разве что примерно как делать) :

178
С++ Выражение должно иметь тип указателя на объект

С++ Выражение должно иметь тип указателя на объект

Ошибка: выражение должно иметь тип указателя на объектОднако, как только я ставлю указатель, появляется другая ошибка

921
Книги и учебные ресурсы по С++

Книги и учебные ресурсы по С++

В этом вопросе собирается литература по языку C++

179
winrtrunner.exe не найден

winrtrunner.exe не найден

Пытаюсь прописать quickcontrol2 в про файл

724