SQL Update or Insert

239
17 июля 2017, 16:42

Уважаемые форумчане! Требуется ваша помощь!

Подскажите, как правильно? Задача простая, нужно записать визит пользователя в базу данных.

  • Подключаемся к базе данных.
  • Обновляем запись о посетителе в таблице.
  • А вдруг посетитель впервые и его записи нет, значит вставляем запись.
  • Для развёртывания (для первого запуска): А вдруг таблицы нет, значит создаём таблицу.

Вопрос 1: Беспокоит то, что каждый раз при обновлении (update) куча холостых операций (create, insert), может это как то иначе решается, подскажите.

Вопрос 2: А как вы решаете задачи которые требуются однократно при первом запуске?

Вопрос 3: Подключение к базе данных. Может в другой файл переместить? Но тогда при перемещении файла будут проблемы, а если оставить - то постоянно открывается и закрывается подключение к базе данных в разных файлах.

$db = new PDO('sqlite:file.sqlite');
  $db -> exec("CREATE TABLE IF NOT EXISTS 'tableName' (
    id PRIMARY KEY AUTOINCREMENT,
    user TEXT UNIQUE NOT NULL,
    visitCounter INTEGER DEFAULT '0'
  )");
  $db -> exec("INSERT OR IGNORE INTO 'tableName' (user) VALUES ('user1')");
  $db -> exec("UPDATE 'tableName' SET visitCounter = visitCounter + 1 WHERE user = 'user1'");
unset($db);
READ ALSO
Рекурсивный обход тест кейсов в codeception

Рекурсивный обход тест кейсов в codeception

Решил попробовать освоить codeception, и сразу же возникла проблема: У меня есть директория functional с функциональными тестами разбитыми по подпапкам:

212
Ошибка parsererror в Ajax

Ошибка parsererror в Ajax

Не срабатывает success в ajaxА в error выдает такое (2) [Object, "parsererror"]

397
200 ок вместо 404, как исправить

200 ок вместо 404, как исправить

Написал скрипт сайта, адреса следующего вида васяру/1234567

257
Как разбить цикл wordpress?

Как разбить цикл wordpress?

Добрый вечер!

320