Предварительный просмотр результата обновления / вставки запроса без внесения изменений в базу данных в MySQL? - PullRequest
0 голосов
/ 14 апреля 2010

Я пишу скрипт для импорта файлов CSV в существующие таблицы в моей базе данных. Я решил выполнить операции вставки / обновления самостоятельно, используя операторы PHP и INSERT / UPDATE, и не использовал команду LOAD INFILE MySQL, у меня есть для этого веские причины.

Я хотел бы эмулировать операции вставки / обновления и отображать результаты для пользователя, а затем дать им возможность подтвердить, что все в порядке, и затем зафиксировать изменения в базе данных.

Я использую движок базы данных InnoDB с поддержкой транзакций. Не уверен, что это поможет, но размышлял над строкой вставки / обновления, запроса данных, отображения для пользователя, а затем транзакции фиксации или отката?

Любой совет будет оценен.

Ответы [ 2 ]

5 голосов
/ 14 апреля 2010

Более простой метод будет примерно таким.

На странице предварительного просмотра:

  1. буферизирует ваш php-вывод
  2. начать транзакцию
  3. делайте ваши вставки и обновления
  4. выберите ваши данные
  5. выведите его как хотите
  6. Откат

Затем на странице подтверждения:

  1. буфер вывода
  2. начать транзакцию
  3. делать вставки и обновления
  4. 1028 * совершить *
  5. выведите то, что вы хотите
0 голосов
/ 14 апреля 2010

Вы можете импортировать данные в отдельную таблицу «import». Покажите пользователю результат из таблицы. Если он нажмет «ОК», скопируйте эти данные в основную таблицу и удалите таблицу импорта. Если он нажмет «Отмена», просто удалите таблицу импорта.

Имя таблицы импорта следует выбирать для каждого пользователя, чтобы разные пользователи не перезаписывали свои таблицы.

Транзакции здесь вам не помогут, потому что транзакция откатится после завершения скрипта импорта PHP.

...