@12HQ

Php pdo почему возвращает false?

Вот на этом этапе подключения и вывода какой либо информации возвращает false. До этого, через mysqli_ всё работало

$host = '127.0.0.1';
$dbname = 'bdKIZ';
$username = 'root';
$pass = '';
$dsn = 'mysql:host='.$host.';dbname ='. $dbname.';charset=utf8';


try{
    $pdo = new PDO($dsn, $username, $pass);
    var_dump($pdo);
        $table = 'Detail';
        $sql = "SELECT * FROM `Detail`";
        var_dump($pdo->query($sql));
}catch(PDOException $e){
    echo "". $e->getMessage();
}

Возвращает:
6645e1ed47f47282801440.png
База данных:
6645e1f4b6442359442957.png
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Потому что этот код дважды бессмысленный.
Во-первых, бессмысленно добавлять try-catch, если не включил выброс исключений.
Во-вторых, если выброс исключений включён, то чтобы увидеть ошибку, никакое try-catch не нужно - РНР прекрасно покажет её и так.

Вместо этого сарая из травы и палок надо написать
<?php
$host = '127.0.0.1';
$dbname = 'bdKIZ';
$username = 'root';
$pass = '';
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";

ini_set('display_errors', 1);
error_reporting(E_ALL);

$pdo = new PDO($dsn, $username, $pass);
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql = "SELECT * FROM `Detail`";
$stmt = pdo->query($sql);
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));


И после этого выполнить код и ознакомиться с сообщением об ошибке.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Чтобы использовать try/catch с PDO убедитесть, что у вас включена опция PDO::ERRMODE_EXCEPTION.
$pdo = new PDO($dsn, $username, $pass);
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы