我有一个数据库我插入项目使用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查询但没有成功一样。
有什么建议吗?
答案 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');