0

В первый раз взялся за PHP, делал по гайдам на ютубе, но пришел в тупик. С подключением к базе данных проблем вроде нет, но получить результат SQL запроса так и не смог...

$db = new PDO("mysql:host = $db_host;dbname = $db_name", $username, $password);
    $info=[];
    if ($query = $db->query("SELECT * FROM WORK")){
        $info = $query->fetchAll(PDO::FETCH_ASSOC);
} 
else {
    print_r($db->errorInfo());}

В результате получаю ошибку: Array ( [0] => 3D000 [1] => 1046 [2] => No database selected )

Дополню: SQL запрос в phpMyAdmin выполняется корректно.

  • удостоверьтесь, что в $db_name нужное лежит. подключается оно к серверу, а не к базе, поэтому с подключением проблем может и не быть, а база не указана. И переменные в сроках лучше заворачивайте в скобки {$var} – teran Jun 21 '22 at 14:32

1 Answers1

0

Есть большая вероятность, что дело в пробелах в строке

("mysql:host = $db_host;dbname = $db_name", $username, $password)

Там всё должно быть слитно (имеется в виду в первом аргументе)

  • тсс. по ролику с ютуба жеж – teran Jun 21 '22 at 14:34
  • @teran там может IDE с большим межсимвольным интервалом настроена %) – Алексей Шиманский Jun 21 '22 at 14:35
  • https://www.php.net/manual/ru/ref.pdo-mysql.connection.php в целом в документации нечего не сказано, о том, что должно быт слитно. Но подозреваю, раз потенциально имя БД может содержать пробелы, то удалять их из строки никто не будет. Но в таком случае, странно, что не выводит нечто про то что БД не найдена – teran Jun 21 '22 at 14:37
  • @teran да, там не сказано, но, ЕМНИП, я с таким уже сталкивался. – Алексей Шиманский Jun 21 '22 at 14:38
  • да, дело было именно в пробелах... И на это я потратил пол дня( – Oleg Merkulov Jun 21 '22 at 14:39
  • @teran ↑↑↑ Воооот. Для меня это тоже было странно. Но тем не менее – Алексей Шиманский Jun 21 '22 at 14:52
  • @OlegMerkulov Думаю никто такого не ожидает, т.к. нигде не написано об этом.... но если брать из мануала, то лучше один-в-один)) – Алексей Шиманский Jun 21 '22 at 14:52