我有一个数据库,我使用 php 将项目插入其中。我想获取自动递增列的 ID,我阅读了手册,它说 mysql_query 返回资源变量而不是 bool 值,有没有办法从该资源中检索数据?
echo $query_ins = "INSERT INTO `house` VALUES ('' , '$city', '$street', 'num');
$res = mysql_query($query_ins);
第一个字段是我感兴趣的ID字段。
我尝试了 mysql_fetch_assoc 和 mysql_result 函数将 $res 转换为数组或直接检索数据,就像我对 SELECT 查询所做的那样,但没有成功。
有什么建议吗?
最佳答案
参见手册:mysql_insert_id — Get the ID generated in the last query
这确实是您应该能够自己轻松找到的东西,而无需发布到 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 是确定性的,因此假设您有一个散列的原始 key 字符串,您应该能够使用该 MD5 表达式和原始字符串检索行。
INSERT INTO house (id, ...) VALUES (MD5('xyzzy'), ...);
SELECT * FROM house WHERE id = MD5('xyzzy');
关于mysql - 运行后直接从插入查询中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500669/