1

我有一个数据库,我使用 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 查询所做的那样,但没有成功。有什么建议么?

4

1 回答 1

1

见手册:mysql_insert_id——获取上一次查询生成的ID

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


回复您的评论:

SELECT * FROM house WHERE id = LAST_INSERT_ID()

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

如果在插入时生成不确定的主键值,例如使用 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'); 
于 2013-05-11T19:00:41.373 回答