运行后直接从插入查询中获取数据

时间:2013-05-11 18:59:02

标签: mysql

我有一个数据库我插入项目使用PHP。我想得到自动增量列的ID,我读了手册,它说mysql_query返回一个资源变量而不是布尔值,是否有办法从该资源中检索数据?

echo $query_ins = "INSERT INTO `house` VALUES ('' , '$city', '$street', 'num');
$res = mysql_query($query_ins);

第一个字段是我感兴趣的ID字段。
我尝试使用mysql_fetch_assoc和mysql_result函数将$ res转换为数组或直接检索数据,就像我使用SELECT查询但没有成功一样。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

请参阅手册:mysql_insert_id — Get the ID generated in the last query

这是你应该能够轻松找到的东西,而无需发布到StackOverflow。查看您正在使用的任何API的文档对您有利。


重新评论:

SELECT * FROM house WHERE id = LAST_INSERT_ID()

这假设你有一个自动递增的主键。

如果在insert上生成非确定性主键值,例如使用RAND()或UUID(),则实际上无法检索生成的值。您应该在执行INSERT之前生成该值,因此您可以使用文字值来查找该行。

SET @r := RAND();
INSERT INTO house (id, ...) VALUES (@r, ...);
SELECT * FROM house WHERE id = @r;

MD5是确定性的,因此假设您有一个散列的原始密钥字符串,您应该能够使用该MD5表达式和原始字符串检索该行。

INSERT INTO house (id, ...) VALUES (MD5('xyzzy'), ...);
SELECT * FROM house WHERE id = MD5('xyzzy');