表单提交后从MYSQL携带行值

时间:2009-06-04 01:55:43

标签: php mysql codeigniter

将自动递增ID从一种形式传送到另一种形式的最佳方法是什么?

我有3个表(用户,住所和users_residences)。我希望用户注册,添加到users表,重定向到表单以创建住所,该住所将向住宅表添加一行,同时将住宅tabe行的id和users表行的id添加到users_residences表

我一直在玩uri细分,但想不出一种方法来存储(或调用)刚刚添加的用户ID,以便在第二种形式中使用。

我可能会使用会话在users表中存储会话ID,然后从中查找行ID,但这看起来很糟糕。

我对编程很陌生,所以请随时告诉我,我失败了,但至少指出了我可以学习其中一些概念的方向。

感谢

5 个答案:

答案 0 :(得分:1)

我说你最好使用users表中的会话密钥;它更安全(假设您通过https执行此操作)。

从安全角度来看,在隐藏字段中存储值很容易操作。如果你的字段使用自动增量,那么很容易猜出下一个字段是什么。用户可以假装成为下一个注册用户并获取该用户的信息。您还会提供有关其他用户的ID,您的网站注册用户数等信息。

另外,除非你打算做一些ajaxy,否则我不确定有多少选择;用户将单击“提交”,在保存发生时重定向到另一个网页,可以传输的唯一信息将是您将其重定向到会话的URL。你可以在网址中传递它,但它也会遇到上述问题。

答案 1 :(得分:0)

在第二种形式中,您可以包括:

<input type='hidden' name='user_id' value='whatever' />

答案 2 :(得分:0)

在MySQL中,您可以使用以下语句获取最后插入行的ID:

select LAST_INSERT_ID();

然后,您可以在表单或会话中传递该值,以便将来插入。

答案 3 :(得分:0)

你可以打电话

 $id = mysql_insert_id();
运行insert语句后立即

获取数据库为autoincrement字段生成的最后一个id。如果语句没有生成id,则返回0。这个page更详细地解释了。

然后,您可以在下一个表单上使用该ID

 <input type="hidden" value="<?= $id ?>"/>

答案 4 :(得分:0)

我认为首先应该在此过程中使用数据库事务。 要做的第二件事是使用以下内容获取事务中最后插入的id:

像:

<强> $这 - &GT; DB-&GT; trans_start();
..(查询)...
$这 - &GT; DB-&GT; INSERT_ID();
..(查询)...
$ this-&gt; db-&gt; trans_complete();

的问候,
@pcamacho