Салют! Не могу понять что происходит не так с подключением к базе данных. Подключаюсь под админом.
Код подключения:
$host = 'localhost';
$db = 'forum';
$user = 'root';
$pass = '';
$charset = 'utf8';
$dsn = "mysql:host = $host; dbname = $db; charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES =>false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
$stmt = $pdo->query('SELECT * FROM catalogs;');
while ($row = $stmt->fetch()){
echo $row['name'] . "\n";
}
После запуска, получаю ошибку:
Fatal error: Uncaught PDOException: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected in E:\nginx\html\code\bd\connect-db.php:35 Stack trace: #0 E:\nginx\html\code\bd\connect-db.php(35): PDO->query('SELECT * FROM c...') #1 {main} thrown in E:\nginx\html\code\bd\connect-db.php on line 35
В вашем коде SQL запрос можно как с запятой, так и без.
В строке dsn пробелы можно использовать! Только кроме секции dbname, тут нельзя пробел ни перед знаком равно, ни после. Вот так работает: "mysql: host = $host; dbname=$db; charset = $charset"
. Не знаю почему, могу лишь предположить, что данная строка распарсивается регуляркой или explode() и где-то косяк. Поэтому следует быть более осторожным, чтобы запариться на такой мелочи - не делайте лишние пробелы, мы не в Ворде редактируем текст.
Данный код работает, проверил на своем компе:
$host = 'localhost';
$db = 'forum';
$user = 'root';
$pass = '';
$charset = 'utf8';
$dsn = "mysql: host = $host; dbname=$db; charset = $charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
$stmt = $pdo->query('SELECT * FROM catalogs LIMIT 20;');
while ($row = $stmt->fetch()) {
echo $row['name'] . "<br>";
}
http://php.net/manual/ru/ref.pdo-mysql.connection.php
посмотрите примеры подключения Уберите лишние пробелы и, возможно, поставьте пробел после "mysql:"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем приветСтало интересно, а что происходит, когда в БД (MySQL) накапливается более 100+млн записей? Они как-либо архивируются/как происходит...
Стоит задача написать некую среду для моделированияВ ней пользователю предложены какие-то готовые модельки и алгоритмы
Есть 2 обьектаRoom и User