1

我想将数据插入数据库。我有一个名为成员的表,它有 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."')";

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

4

4 回答 4

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 的内置自动增量功能。比你现在做的好多了。

于 2012-05-04T16:16:39.770 回答
4

如果您使用它为新成员生成下一个 ID 号,您应该考虑将 ID 设置为 auto_increment 字段 - 就目前而言,您可能会同时获得两个成员注册,并且两者获得相同的 ID

于 2012-05-04T16:21:06.983 回答
2

替换此行

$nors = mysql_query($no); 

通过这些线路:

$result_handler = mysql_query($no); 
$result = mysql_fetch_array($result_handler);
$nors = $result[0];
于 2012-05-04T16:18:37.723 回答
2

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

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

于 2012-05-04T16:21:22.310 回答