更新我刚刚创建的记录

时间:2012-06-24 01:50:39

标签: php mysql

我正在创建一个人员招聘网站,我在将新数据添加到上一页创建的记录时遇到了问题。

为了便于使用,我将表单拆分为多个步骤(每个步骤都在新页面上),其中步骤1在候选数据库表中创建记录并插入候选人的个人详细信息(姓名,姓氏,联系方式,性别等)并将用户发送到下一页(步骤2),其中可以上传个人资料图片,并将图像的路径插入到新创建的记录中的字段中。

问题在于我似乎无法获取代码来调用相关记录的记录ID。我想过使用mysql_insert_id,但问题是双重的。首先,我不确定我是否知道如何正确使用此功能,并且多次谷歌搜索对我没有任何明智之处。其次,由于该公司将在全国各地设立多个分支机构,因此有可能两个用户同时添加候选人,而用户A最终可能会将该照片添加到用户B创建的记录中。

我尝试使用$ _POST来获取记录ID,但是一旦将数据插入表中,数据似乎没有将数据传递到下一页。

我并不是PHP的新手,但这不是我以前做过的事情,因为我曾经有一个朋友可以处理这种事情但不幸的是,他几个月前去世了所以我不得不学习我走的时候怎么做,收效甚微。

我希望我对自己的问题足够清楚,因为我有点失落。

非常感谢任何协助。

3 个答案:

答案 0 :(得分:1)

你最好使用php PDO。在那里,有一个函数可以获取插入行的ID(http://us3.php.net/manual/en/pdo.lastinsertid.php)。当您运行插入代码时,在它之后运行它,它将为您提供刚刚插入的行的ID。现在,将该ID附加到用户的链接或会话变量(或任何其他用户特定的),您将能够轻松跟踪每个人将能够编辑的最后一行。

答案 1 :(得分:0)

首先,我会使用PDO(或mysqli)而不是被弃用的mysql_ *扩展名。

使用PDO,执行语句后,您可以使用两个函数来获取所需的ID:

$stmt->execute($values);     // $stmt contains the prepared statement

$return_code = $stmt->rowCount();
// $return_code = 1 : new record
// $return_code = 2 : updated record

if ($return_code == 1)
{
    $ID_YOU_NEED = $db->lastInsertId();    // $db is the database connection
}

顺便说一下,我使用rowCount()因为我通常在大多数插入查询中都使用ON DUPLICATE KEY UPDATE,所以你可以跳过这一步。

然后我会将ID存储在会话中,或者将其添加为下一个表单的隐藏字段

顺便说一句,根据要求,我不会在所有必需信息进入之前将任何内容存储在数据库中。

答案 2 :(得分:0)

首先,

在将记录插入数据库的页面中,您需要获取新创建记录的ID。使用mysqli::insert-id还有其他方法可以做到。

其次,

将记录ID存储在用户的会话中,并在后续页面中使用它来更新记录。出于安全原因,将id存储在会话中非常重要,不是作为URL GET值,也不是作为“隐藏”字段。