0

我想在我的 PHP 代码中使用临时表。这是一张将邮寄的表格。我确实使用会话变量和数组,但填写的一些数据必须以表格格式存储,并且用户必须能够在出现拼写错误等情况下删除条目。用数组执行此操作可能有效(不确定)但我有点新在 php 和使用表似乎要简单得多。我的问题是,使用 mysql_connect 创建表并添加数据行,但是当我添加第二行时,它会删除表并再次创建它...使用 mysql_pconnect 的工作原理是不删除表,但创建的不仅仅是表的实例次和删除条目?真是一团糟!我怎样才能最好地使用临时表,而不是在我的页面刷新时删除它们?如果用户关闭页面并将表留在数据库中,不使用临时表可能会导致其他问题。

4

2 回答 2

1

最好创建一个永久表和临时行。因此,假设您已将包含所有半完整表单数据的对象序列化为$form_data. 在脚本结束时,应该发生的最后一件事是将 $form_date 存储到数据库中,并将生成的行 ID 存储在您的 $_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如果表有时间戳字段,您可以(自动)定期清理表。只需删除您认为已过期的所有内容。

上面的代码没有经过详尽的语法错误检查。

于 2009-10-01T21:20:52.780 回答
1

听起来很乱!我不确定您为什么要使用临时表,但您可以创建一个随机表名并将其分配给会话变量。但这是非常错误的,因为您将为每个用户都有一个表!

如果您必须使用数据库,请将字段添加到名为 sessionID 的表中。当您进行插入/删除时,请参考 php sessionid。

只是将数据存储在会话中可能会容易得多......

于 2009-10-01T21:14:46.220 回答