选择计数不计算在内

时间:2012-04-06 09:06:49

标签: php mysql variables select count

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

其中一个是自动增量字段的编号,稍后会发生插入查询。

我试图使用:

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

现在希望,我很清楚我想要接近什么。

2 个答案:

答案 0 :(得分:3)

SELECT COUNT(*) FROM table1

答案 1 :(得分:3)

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

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