Я хочу использовать временные таблицы в своем PHP-коде. Это форма, которая будет отправлена по почте. Я использую переменные сеанса и массивы, но некоторые заполненные данные должны храниться в формате таблицы, и пользователь должен иметь возможность удалять записи в случае опечаток и т.д., Делая это с помощью массивов (не уверен), но я новичок на php и использование таблиц кажется намного проще. Моя проблема заключается в том, что использование mysql_connect создает таблицу и добавляет строку данных, но когда я добавляю свою вторую строку, она отбрасывает таблицу и создает ее снова... Использование mysql_pconnect работает, не отбрасывая таблицу, но создает больше, чем на примере таблицы в раз и удалять записи? какой беспорядок! Как лучше всего использовать временные таблицы и не удалять их при обновлении моей страницы? не использование временных таблиц может вызвать другие проблемы, если пользователь закрывает страницу и оставляет таблицу в базе данных.
Звучит как беспорядок! Я не уверен, почему вы используете временную таблицу вообще, но вы можете создать случайное имя таблицы и назначить ее переменной сеанса. Но это очень неправильно, поскольку у вас будет таблица для каждого пользователя!
Если вы должны использовать базу данных, добавьте поле в таблицу с именем sessionID. Когда вы вставляете/удаляете ссылку на php sessionid.
Простое хранение данных в сеансе, вероятно, будет намного проще, но...
Лучше создать постоянную таблицу и временные строки. Итак, скажите, что вы сериализовали объект, содержащий все ваши полуполные данные формы как $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
периодически, если таблица имеет поле метки времени. Просто удалите все, что, по вашему мнению, истекло.
Приведенный выше код не был исчерпывающе проверен на наличие синтаксических ошибок.