@danchikraw
Веб-додик

Не работает pdo php?

Не работает pdo query, возвращает false.
<?php
$host = 'localhost';
$user = 'root';
$password = 'root';
$db_name = 'db_des';
$options = [
	PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
	PDO::ATTR_EMULATE_PREPARES => true,
	PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];

try {
	$connection = new PDO("mysql:host=$host; $dbname=$db_name", $user, $password, $options);
} catch (Exception $e) {
	echo 'Ошибка БД: ' . $e->getMessage();
}
$sth = $connection->query('SELECT * FROM `pages`');
var_dump($sth);
?>

Таблица
5ead3471301fa070748263.png
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
@KingstonKMS
Уровень ошибок ERRMODE на полную выстави и занимайся отладкой. Тогда вопросов не будет
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Где ты это ужас взял?
По виду код из моей статьи, но кто-то его изуродовал.

ERRMODE должно быть PDO::ERRMODE_EXCEPTION
в DSN не надо писать отсебятину. что такое $dbname?!
try catch надо выкинуть
var_dump($sth) вернёт не то что ты думаешь
надо добавить charset, чтобы потом снова не бегать с вопросами "ой у миня кракозябры"

<?php
$host = 'localhost';
$user = 'root';
$password = 'root';
$db_name = 'db_des';
$charset = 'utf8mb4';
$options = [
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_EMULATE_PREPARES => true,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];
$pdo = new PDO("mysql:host=$host;dbname=$db_name;charset=$charset", $user, $password, $options);

$sth = $pdo->query('SELECT * FROM `pages`');
var_dump($sth->fetchAll());
Ответ написан
@SORDELIUSE
$sth = $connection->query('SELECT * FROM `pages`');
return $sth;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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