Как проверить, есть ли запись в базе данных
Короткий ответ
Запросите одну строку и проверьте, вернулась ли она:
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE products (id INTEGER PRIMARY KEY, title TEXT, price INTEGER)');
$pdo->exec("INSERT INTO products (title, price) VALUES ('Tea', 250), ('Coffee', 400), ('Juice', 180), ('Green tea', 300)");
function productExists(PDO $pdo, string $title): bool
{
$statement = $pdo->prepare('SELECT 1 FROM products WHERE title = ? LIMIT 1');
$statement->execute([$title]);
return $statement->fetchColumn() !== false;
}
var_dump(productExists($pdo, 'Tea'));
var_dump(productExists($pdo, 'Milk'));Результат:
bool(true)
bool(false)Проверка и вставка
Между проверкой и добавлением другой запрос может успеть вставить такую же запись. Надёжную защиту от повторов даёт только ограничение UNIQUE в таблице — проверка в коде нужна лишь для понятного сообщения.
Функции из этого ответа
- PDO — Подключение к базе данных.
- PDOStatement — Подготовленный запрос и его результат.
- boolval — Преобразует значение в логическое.