Первый запрос к MySQL из PHP: буквально 10 строк кода

Задача простая: подключиться к базе и вытащить одну строчку. Без теории, только рабочий минимум на PDO (это стандарт, старые mysql_* функции не используем).


Вариант 1: самый короткий рабочий пример (10 строк)

php
<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$user = 'db_user';
$pass = 'db_pass';
 
$pdo = new PDO($dsn, $user, $pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
 
$stmt = $pdo->query('SELECT id, name FROM users LIMIT 1');
$row = $stmt->fetch(PDO::FETCH_ASSOC);
 
if ($row) {
    echo 'ID: ' . $row['id'] . ', Имя: ' . $row['name'];
}

Что тут есть:

  • $dsn — строка подключения (хост, база, кодировка).
  • PDO — объект соединения.
  • query() — выполняет простой запрос без параметров (для SELECT без пользовательских данных это допустимо).
  • fetch() — берёт одну строку как ассоциативный массив.
  • Проверка if ($row) — чтобы не пытаться читать несуществующие данные.

Вариант 2: если нужно передать параметр (например, по ID)

Это уже не «без параметров», но сразу показываю правильный путь — через подготовленный запрос. Это важно, если в будущем будешь брать ID из $_GET или $_POST.

php
<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$user = 'db_user';
$pass = 'db_pass';
 
$pdo = new PDO($dsn, $user, $pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
 
$id = 5; // в реальности это может быть (int)$_GET['id']
$stmt = $pdo->prepare('SELECT id, name FROM users WHERE id = ?');
$stmt->execute([$id]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
 
if ($row) {
    echo 'ID: ' . $row['id'] . ', Имя: ' . $row['name'];
}

Здесь вместо query() используется prepare() + execute() — это защита от SQL‑инъекций. Даже если потом подставишь данные от пользователя, логика останется безопасной.


Важные мелочи, чтобы не падало

  1. Кодировка utf8mb4 в DSN. Если её не указать, могут быть проблемы с кириллицей и эмодзи.
  2. Обработка ошибок. Сейчас при ошибке будет исключение. В реальном скрипте его нужно ловить через try/catch, а не показывать пользователю.
  3. Пароль не в коде. В примере пароль написан прямо в файле — так в продакшене нельзя. Используй переменные окружения или конфиг‑файл вне веб‑корня.
  4. Права пользователя БД. У db_user должны быть права на SELECT из нужной таблицы.

Как проверить, что всё работает

Создай файл test.php с одним из примеров выше, положи в папку, доступную через веб‑сервер, и открой в браузере. Если видишь строчку вида:

ID: 5, Имя: Иван

— значит, первый запрос сработал. Если страница пустая или ошибка — смотри логи PHP и убедись, что:

  • сервер БД запущен,
  • хост/имя базы/логин/пароль верные,
  • кодировка в DSN указана.

Добавить комментарий