繁体   English   中英

我的SQL在没有mysql_pconnect的情况下将临时表与PHP一起使用

[英]My SQL Using temporary tables with PHP without mysql_pconnect

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

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

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

不过,仅将数据存储在会话中可能会容易得多...

最好创建一个永久表和临时行。 因此,假设您已将保存所有半完整表单数据的对象序列化为$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表。 只需删除您认为已过期的所有内容即可。

上面的代码尚未详尽检查语法错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM