4

我正在尝试计算表格行并在结果上加 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

4 回答 4

6

你可以使用:

SELECT COUNT(id)+1 as IDCount FROM donations

作为您的查询。这将节省您在 PHP 中进行数学运算的任何麻烦。您拉回的数组将立即获得您想要的数字。

编辑:然而,更好的选择是使用自动递增的列类型。在 MySQL 中,这是通过auto_incrementcreate table 语法中的语法完成的。

使用它,您实际上不必插入一个值,而是NULL按如下方式传递它(假设 ID 是带有 Auto_increment 的字段:

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

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

于 2012-09-14T12:18:18.010 回答
3

使用简单的 php

$countQuery = mysql_query("SELECT id FROM donations");
$count=mysql_num_rows($countQuery);
$count+=1;
于 2012-09-14T12:34:43.613 回答
1

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

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

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

于 2012-09-14T12:22:38.397 回答
0

这个问题是针对 MySQL 数据库的。我建议您使用AUTO INCREMENT 字段类型。当您使用 PHP 时,如果您需要在插入记录后知道 id,请使用:

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

mysql_insert_id()

使用

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

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

于 2012-11-14T13:37:59.933 回答