我喜欢为将通过插入查询中的字段输入创建的文件创建特定文件名。我喜欢有一个独特的钥匙。这个键由一个user_id,一个时间戳组成,最后,它应该放置来自插入查询的生成的insert_id。它应该放在auto_increment no。为我生成的变量的结尾。所以问题是,我在插入查询之前创建了一个变量,这样这个变量将成为插入查询的一部分,如:
$get_num = $db->query("SELECT COUNT (*) FROM tableA");
$num = $query->fetch_assoc();
$end = $num + 1;
$file_id = $id .".". time() .".". $end;
$insert = $db->query("INSERT INTO tableA ( file_id, a, b, c) VALUES('".$file_id."','".$a."','".$b."','".c."')");
答案 0 :(得分:2)
实际上,忘记我之前写的内容。您不能指望COUNT
为您工作,因为删除行时会发生什么?您将拥有重复的值。对你来说最好的选择是首先创建行,抓住insert_id,然后使用你之前描述的函数UPDATE
file_id。
$uid = uniqid();
$insert = $db->query("INSERT INTO tableA ( file_id, a, b, c) VALUES('".$uid."','".$a."','".$b."','".c."')");
$file_id = $id .".". time() .".". mysql_insert_id();
$db->query("UPDATE tableA SET file_id='{$file_id}' WHERE file_id='{$uid}' LIMIT 1;");
最后,你仍然需要使用两个查询,所以它不像这样需要更多的资源。此外,您不再进行COUNT
操作了。
在其他新闻中,请务必阅读SQLi,具体取决于a,b,c变量的来源。
答案 1 :(得分:0)
这是一个坏主意。做插入然后使用LAST_INSERT_ID。否则,正如@AuthmanApatira所说,你可能有错误的ID。 PHP的目的是mysql_insert_id()。
另请注意,如果您的索引列是auto_increment,您甚至不需要担心id; db会为你处理它。您可以在查询运行后获取它。