Мой SQL Использование временных таблиц с PHP без mysql_pconnect

0

Я хочу использовать временные таблицы в своем PHP-коде. Это форма, которая будет отправлена ​​по почте. Я использую переменные сеанса и массивы, но некоторые заполненные данные должны храниться в формате таблицы, и пользователь должен иметь возможность удалять записи в случае опечаток и т.д., Делая это с помощью массивов (не уверен), но я новичок на php и использование таблиц кажется намного проще. Моя проблема заключается в том, что использование mysql_connect создает таблицу и добавляет строку данных, но когда я добавляю свою вторую строку, она отбрасывает таблицу и создает ее снова... Использование mysql_pconnect работает, не отбрасывая таблицу, но создает больше, чем на примере таблицы в раз и удалять записи? какой беспорядок! Как лучше всего использовать временные таблицы и не удалять их при обновлении моей страницы? не использование временных таблиц может вызвать другие проблемы, если пользователь закрывает страницу и оставляет таблицу в базе данных.

  • 0
    Можете ли вы опубликовать пример таблицы, которую вы создаете? Если я понимаю суть проблемы, то я думаю, что вы можете обойти эту проблему, имея более постоянную таблицу, которая описывает временную структуру, привязанную к каким-то ключам сеанса, но я хочу быть уверенным, что мы находимся на та же страница ...
  • 0
    Да, я скорее использую одну постоянную таблицу и отфильтрую ее по идентификатору сеанса. Спасибо, что вернулись.
Теги:
temp-tables

2 ответа

1

Звучит как беспорядок! Я не уверен, почему вы используете временную таблицу вообще, но вы можете создать случайное имя таблицы и назначить ее переменной сеанса. Но это очень неправильно, поскольку у вас будет таблица для каждого пользователя!

Если вы должны использовать базу данных, добавьте поле в таблицу с именем sessionID. Когда вы вставляете/удаляете ссылку на php sessionid.

Простое хранение данных в сеансе, вероятно, будет намного проще, но...

  • 0
    +1 к предложению использовать сеанс для «незаконченных» данных.
1

Лучше создать постоянную таблицу и временные строки. Итак, скажите, что вы сериализовали объект, содержащий все ваши полуполные данные формы как $form_data. В конце script последнее, что должно произойти, состоит в том, что $form_date следует сохранить в базе данных, а результирующий идентификатор строки будет сохранен в вашей $_SESSION. Что-то вроде:

$form_data=serialize($form_object); //you can also serialize arrays, etc.
//$form_data may also need to be base64_encoded

$q="INSERT INTO incomplete_form_table(thedata) '$form_data'";    
$r=mysqli->query($q);
$id=$mysql->last_insert_id;
$_SESSION['currentform']=$id;

Затем, когда вы перейдете на следующую страницу, вы создадите форму следующим образом:

$q="SELECT thedata FROM incomplete_form_table WHERE id={$_SESSION['currentform']}";
$r=$mysql->query($q);
$form_data=$r->fetch_assoc();
$form=$form_data['thedata'];//if it was base64_encoded, don't forget to unencode it first

Вы можете (автоматически) очищать таблицу incomplete_form_data периодически, если таблица имеет поле метки времени. Просто удалите все, что, по вашему мнению, истекло.

Приведенный выше код не был исчерпывающе проверен на наличие синтаксических ошибок.

  • 0
    Спасибо за отзыв, я попробую.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню