计算SQL表行并在结果上添加1

时间:2012-09-14 12:17:16

标签: php mysql sql count

我正在尝试计算表格行并在结果上添加1,我有这段代码。

$countQuery = "SELECT COUNT(id) FROM donations";
$outcomeQuery = mysql_query($countQuery);
$countUp = mysql_fetch_array($outcomeQuery);
$plusOne = 1; 
$outcome = $countUp;
echo $outcome[0]
    or die(mysql_error());

但这给了我错误:

  

致命错误:不支持的操作数类型

我需要这个,所以我总是有一个以前捐赠者没有使用的唯一号码。

4 个答案:

答案 0 :(得分:6)

您可以使用:

SELECT COUNT(id)+1 as IDCount FROM donations

作为您的查询。这将节省你在PHP中的任何麻烦来做数学。您拉回的阵列将具有您想要的数字。

编辑:但更好的选择是使用自动递增的列类型。在MySQL中,这是使用create table语法中的语法auto_increment完成的。

使用这个,你实际上 来插入一个值,而是按照以下方式传递NULL(假设ID是包含Auto_increment的字段:

insert into tableName (ID,Name) values (null, 'Fluffeh');

所以你看到你没有给它任何ID列的值 - 数据库负责使用正确的数字。

答案 1 :(得分:3)

使用简单的php

$countQuery = mysql_query("SELECT id FROM donations");
$count=mysql_num_rows($countQuery);
$count+=1;

答案 2 :(得分:1)

依靠 COUNT 给您一个唯一的号码是很危险的。如果两个进程执行此查询,然后尝试并提交,会发生什么:您突然有两次相同的值。

实现某种与表内容无关的序列函数会更安全。此链接显示了一种可能性:

http://forums.mysql.com/read.php?61,143867,238482#msg-238482

答案 3 :(得分:0)

这个问题适用于MySQL数据库。我建议你使用AUTO INCREMENT field type。 当您使用PHP时,如果您在插入记录后需要知道id,请使用:

mysql_query("INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysql_insert_id();

请参阅mysql_insert_id()

使用

  

4个随机生成的数字,100%确定没有重复

不会100%确定没有重复。不要重新发明轮子。这就是如何解决确保使用唯一递增标识符的问题已经解决的问题,您不需要一个并不总是有用的自制解决方案的尴尬。