2013-03-14 65 views
1

好的,这是我的场景 - 您可能不同意我正在尝试做的事情,但我有我的理由。 用户可以将各种信息上传到数据库,我也希望他们能够同时上传图片。现在由于各种原因,我想存储图像的文件名称我加入的记录的ID号(我有一个ID列作为自动增量的主要)。很明显,我将不得不将文件扩展名存储在数据库中。 现在有一种方法可以添加记录,然后知道设置了什么ID以便我可以保存图像?如果两个人同时提交表单,我不想查询并选择最高的ID,因为这可能会出错。 任何想法?MYSQL - 查找刚刚添加的记录的ID

回答

1

运行在PHP中插入之后,可以从$mysqli->insert_id(其中$ mysqli的获得AUTO_INCREMENT ID是MySQLi连接对象),$pdo->lastInsertId(其中$ pdo是PDO连接对象)或mysql_insert_id()(如果您仍在使用MySQL,您不应该这样做),而无需运行其他查询。

+0

你能否详细说明?我不熟悉pdo。 – cainy393 2013-03-14 19:07:53

+0

@ cainy393你在PHP中使用什么来运行查询? – 2013-03-14 19:11:21

+0

erm ...没有任何真正的mysql_query(“INSERT INTO table(Some,Stuff)VALUES(Some,Values);”) – cainy393 2013-03-14 19:36:24

3

LAST_INSERT_ID()会给你ID这是自动生成的:

...返回表示:在对一个AUTO_INCREMENT 列设置第一 自动生成的价值BIGINT(64位)值最近执行的INSERT声明影响到这样的 一列。例如,将产生一个 AUTO_INCREMENT值的行后,就可以得到这样的价值:

mysql> SELECT LAST_INSERT_ID(); 
     -> 195 
+0

非常感谢!这似乎会起作用。虽然有可能如果有几个人同时提交表格,它可能会选择错误的表格吗? – cainy393 2013-03-14 19:04:35

+0

@ user1821586有点搜索会告诉你。在发布问题之前,请务必做一些调查。尝试找到解决方案,当你被困在这里时,不要在这里发布! – 2013-03-14 19:06:03

+0

@ user1821586如果有几个人同时提交表单,它会起作用,因为它会为您提供* current连接*的最后一个自动生成值。由于每个表单提交将使用不同的连接,它们不会干涉。 – 2013-03-14 19:08:13