Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, есть ли запись в базе данных

Короткий ответ

Запросите одну строку и проверьте, вернулась ли она:

<?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 — Преобразует значение в логическое.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.