0

我尝试构建一个集成其他变量的变量。

其中之一将是稍后将发生插入查询的自动增量字段的数量。

我尝试使用:

$get_num = $db/*=>mysqli*/->query("SELECT COUNT (*) auto_increment_column FROM table1");  
            $num = $query->fetch_assoc($get_num);
            $end = $num + 1;

在此之前我没有任何更新/插入查询,所以我不能使用

$end = $db->insert_id;

这就是为什么我认为我可以只计算 auto_increment 行的数量并拥有构建新变量所必需的最后一个变量。

出于某种原因,这不会计算条目和输出 0。我不明白为什么会发生这种情况。

如果有人能告诉我我做错了什么,我真的很感激。多谢。

更新

对于所有喜欢了解目标的人:

我喜欢为稍后将通过插入查询中的字段输入创建的文件创建一个特定的名称或 ID。我喜欢有一个独特的钥匙。此键由 user_id 和时间戳组成。在这个生成的变量的末尾应该放置 auto_increment nr。将放置在表中的查询。所以问题是,我在插入查询发生之前创建了一个变量,以便该变量将成为插入查询的一部分,例如:

$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."')");{

希望现在,我喜欢接近什么会很清楚。

4

2 回答 2

3

尝试

SELECT COUNT(*) FROM table1
于 2012-04-06T09:08:29.883 回答
3

如果您需要 MySQL 中的自动递增列,那么您应该使用AUTO_INCREMENT。它为您实现这一切并避免竞争条件。您尝试实现它的手动方式有几个缺陷,即

  • 如果两个脚本试图同时插入,它们可能都得到相同的 COUNT(比如 10),因此都尝试使用 ID 11 插入。然后一个会失败(否则你会有重复的!)
  • 如果您添加 10 个项目,然后删除项目 1,则 COUNT 将返回 9 但 id 10 将已经存在。
于 2012-04-06T09:12:11.773 回答