Intereting Posts
Код для анализа строки пользовательского агента? API календаря Google для PHP простой запрос на чтение для получения событий календаря PHP curl_exec возвращает частичный ответ Как создать учетную запись электронной почты в Cpanel через PHP? Laravel перенаправляет маршрут, но затем apache дает ошибку 404 PHP, MySQLi – Как подсчитать строки результатов запроса? Оптимизация стратегий разработки веб-приложений PHP: лучший способ конвертировать дату и время в строку времени? Сортировка массива по ключам на основе другого массива? Ошибка mysql при вставке изображения в базу данных mysql preg_replace все вхождения в строке с определенными разделителями Как эхо «…» после номера 9 и повторять последние два числа после «…» для разбивки на страницы? Хэш-таблицы VS ассоциативные массивы Проверка даты, которая выпадает на рабочий день или на выходные? Выполнить XQuery с помощью PHP

INSERT или REPLACE создает дубликаты

Всякий раз, когда я выполняю команду «ВСТАВИТЬ ИЛИ ЗАМЕНИТЬ» в sqlite3, она фактически создает повторяющиеся записи вместо перезаписывания существующих записей.

Я создал таблицу в sqlite3 со следующей командой:

CREATE TABLE mytable (a INTEGER PRIMARY KEY, b VARCHAR(50), c BOOLEAN, d BOOLEAN, e INTEGER, f TEXT, g TEXT, h INTEGER, i DATETIME); 

И тогда я выполняю это:

 $database = new POD("sqlite:mydatabase.db"); $database->prepare("INSERT OR REPLACE INTO mytable (b, c, d, e, f, h, h, i) values(?, ?, ?, ?, ?, ?, ?, ?)") $database->execute('test', 0, 1, -1, 'test', 'test', 12, strtotime('now')); 

Что я могу делать неправильно? благодаря

Related of "INSERT или REPLACE создает дубликаты"

Вы должны указать в своем заявлении о create какой набор столбцов должен быть «уникальным» – например

 CREATE TABLE mytable (a INTEGER PRIMARY KEY, b VARCHAR(50), c BOOLEAN, d BOOLEAN, e INTEGER, f TEXT, g TEXT, h INTEGER, i DATETIME, UNIQUE (b,c)); 

Теперь

 sqlite> insert or replace into mytable (b,c,d,e,f,g,h,i) values ('foo',1,1,2,'bar','baz',3,'2011-07-19'); sqlite> select * from mytable; 2|foo|1|1|2|bar|baz|3|2011-07-19 sqlite> insert or replace into mytable (b,c,d,e,f,g,h,i) values ('foo',1,1,2,'bar','baz',4,'2011-07-19'); sqlite> select * from mytable; 3|foo|1|1|2|bar|baz|4|2011-07-19 sqlite> 

Не делай этого. Вы должны указать PK.

Сделайте начальный INSERT , затем выполните UPDATE .