我正在尝试计算表格行并在结果上添加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());
但这给了我错误:
致命错误:不支持的操作数类型
我需要这个,所以我总是有一个以前捐赠者没有使用的唯一号码。
答案 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();
使用
4个随机生成的数字,100%确定没有重复
不会100%确定没有重复。不要重新发明轮子。这就是如何解决确保使用唯一递增标识符的问题已经解决的问题,您不需要一个并不总是有用的自制解决方案的尴尬。