如何在php中使用count?

时间:2012-05-04 16:13:19

标签: php mysql sql count autonumber

我想将数据插入数据库。我有一个表,名为成员,有7列(ID,用户,密码,地址,电话,性别,电子邮件)。我用count来制作像这样的自动编号

$no = "SELECT COUNT(ID)FROM member";
$nors = mysql_query($no);
$nors = $nors + 1;
$query = "INSERT INTO member VALUES (".$nors.",'".$user."','".md5($pass)."','".$name."','".$addr."',".$hp.",'".$gender."','".$email."')";

为什么,nors的结果是6而不是2,虽然我只有1个数据?

4 个答案:

答案 0 :(得分:6)

mysql_query返回结果对象,而不是值。您的查询在COUNT(ID)FROM ...

之间也缺少必要的空格
$no = "SELECT COUNT(ID) AS count FROM member";
$result = mysql_query($no);
$row = mysql_fetch_object($result);
$nors = $row->count;

你应该考虑使用像PDO这样更现代的东西,因为mysql_*函数已被弃用,最终会完全消失。

编辑:@andrewsi在评论中指出,你真的应该使用MySQL的内置自动增量功能来控制ID。比你现在做的要好得多。

答案 1 :(得分:4)

如果你使用它来为新成员生成下一个ID号,你应该考虑将ID设为auto_increment字段 - 就目前而言,你可能会让两个成员同时注册,两者都被分配了相同的ID

答案 2 :(得分:2)

替换此行

$nors = mysql_query($no); 

通过这些方式:

$result_handler = mysql_query($no); 
$result = mysql_fetch_array($result_handler);
$nors = $result[0];

答案 3 :(得分:2)

如果您的id字段设置为自动编号,则无需插入。 MySql将为您处理。无论何时添加新行,自动编号都会递增。如果删除一行,则自动编号不会减少。

如果您当前只有1行,但您已添加并删除了行,那么您的插入将生成一个ID不连续的行。