Не получается вытащить запись из БД 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);

после этого смотрим что выводит и корректируем своиожидания

→ Ссылка