Не получается вытащить запись из БД PDO
Есть страница, в которой надо вывести данные из БД. Я подключил PDO, написал код, однако как результат никаких данных не ввелось.
<?php
$host = 'localhost';
$db = 'marlintask';
$user = 'root';
$pass = 'root';
$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->prepare('SELECT justName FROM staff_data WHERE id = 2');
$stmt->execute([$_GET['id']]);
while ($row = $stmt->fetch(PDO::FETCH_LAZY))
{
echo $row[0] . "\n";
echo $row['justName'] . "\n";
echo $row->justName . "\n";
};
?>
Ответы (1 шт):
Автор решения: Ипатьев
→ Ссылка
Если ничего не работает, то надо отлаживаться.
Но сначала надо писать осмысленный код. Для этого
- во-первых, определиться, выполняем мы одготовленный запрос, или нет
- во-вторых, сообразить что режим PDO::FETCH_LAZY нам здесь нужен как рыбке зонтик, как и цикл вообще
- а нужен метод fetchColumn()
поэтому переписываем код
// проверяем со статическим запросом
$stmt = $pdo->query('SELECT justName FROM staff_data WHERE id = 2');
$row = $stmt->fetch();
var_dump($row);
// проверяем с переменной
$stmt = $pdo->prepare('SELECT justName FROM staff_data WHERE id = ?');
$stmt->execute([$_GET['id']]);
$row = $stmt->fetch();
var_dump($row, $_GET['id']);
// смотрим есть ли у нас вообще в базе что-нибудь
$stmt = $pdo->query('SELECT id, justName FROM staff_data ORDER BY id LIMIT 5');
$data = $stmt->fetchAll();
var_dump($data);
после этого смотрим что выводит и корректируем своиожидания