我想将数据插入数据库。我有一个表,名为成员,有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个数据?
答案 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不连续的行。