如何在php中使用count?

如何在php中使用count?,php,mysql,sql,count,autonumber,Php,Mysql,Sql,Count,Autonumber,我想将数据插入数据库。我有一个名为member的表,它有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."','".$add

我想将数据插入数据库。我有一个名为member的表,它有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个数据?

mysql\u 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**<代码>函数已经被弃用,最终将完全消失。


edit:@andrewsi在评论中指出,无论如何,您确实应该使用MySQL内置的IDs自动增量功能。比您当前所做的要好得多。

mysql\u 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**<代码>函数已经被弃用,最终将完全消失。

edit:@andrewsi在评论中指出,无论如何,您确实应该使用MySQL内置的IDs自动增量功能。比您当前所做的要好得多。

替换此行

$nors = mysql_query($no); 
通过以下方式:

$result_handler = mysql_query($no); 
$result = mysql_fetch_array($result_handler);
$nors = $result[0];
更换这条线

$nors = mysql_query($no); 
通过以下方式:

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

如果您使用此项为新成员生成下一个ID号,您应该考虑将ID改为自动增量字段-目前,您可能会有两个成员同时注册,并且如果您使用此项为新成员生成下一个ID号,则两个成员都会被分配相同的ID,您应该考虑将ID设置为一个自动递增字段-目前,您可能会有两个成员同时注册,并且两个成员都被分配相同的ID

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


如果当前只有一行,但添加和删除了行,则插入操作将生成一个ID不连续的行。

如果ID字段设置为自动编号,则无需插入。MySql将为您处理这个问题。每当添加新行时,自动编号都会增加。如果删除行,则自动编号不会递减



如果当前只有一行,但添加和删除了行,则插入操作将生成一个ID不连续的行。

$nors=mysql\u query($no)这不会返回查询的实际计数。您可能希望使用md5以外的其他工具来存储用户密码。这很不安全。此外,您的代码也容易受到SQL注入的攻击如果您使用它为新成员生成下一个ID号,您应该考虑将ID设置为自动增量字段-目前,您可能会有两个成员同时注册,并且两个成员都被分配了相同的ID。@andrewsi将此添加为答案。我完全错过了这一点,这非常重要。@CountMurphy是的,我知道md5是不安全的。我不懂php,所以我只是让localhost在真正托管之前进行练习:)
$nors=mysql\u query($no)这不会返回查询的实际计数。您可能希望使用md5以外的其他工具来存储用户密码。这很不安全。此外,您的代码也容易受到SQL注入的攻击如果您使用它为新成员生成下一个ID号,您应该考虑将ID设置为自动增量字段-目前,您可能会有两个成员同时注册,并且两个成员都被分配了相同的ID。@andrewsi将此添加为答案。我完全错过了这一点,这非常重要。@CountMurphy是的,我知道md5是不安全的。我不懂php,所以我只需要在真正使用主机之前使用localhost即可:)此外,建议将id作为主键,并按如下方式插入:
“插入成员(用户、密码、地址、电话、性别、电子邮件)值(“$User.”、“.md5($pass)。”、“$name.”、“$addr.”、“$hp.”、“$Gender.”、“$Email”。”
我刚从昨天开始学习php,如果我的代码变得简单或陈旧,我很抱歉。。我正在努力建立我的思想。当我想自动编号时,我应该如何处理nors?I$nors+=1;在$nors=$row->count下;或者只是将$NOR放入insert?不要自己生成
$NOR
。让MySQL为你做吧。不需要代码,它解决了当前方法中的许多问题。请参阅@andrewsi的答案。mysql_*函数已被弃用,您是从哪里了解到这一点的?@ceejayoz我应该在insert中写些什么$query=“INSERT INTO member VALUES(“'.$user.”、“.md5($pass”)、“$nama.”、“$alamat.”、“$hp.”、“$gender.”、“$email.”)诸如此类?此外,建议将id作为主键,并按以下方式插入:
“INSERT INTO member(用户、密码、地址、电话、性别、电子邮件)值(“'.$user.”、“.md5($pass”)、“、“$name.”、“$addr.”,“$hp.”、“$gender.”、“$email””
我刚从昨天开始学习php,如果我的代码变得简单或陈旧,我感到很抱歉。。我正在努力建立我的思想。当我想自动编号时,我应该如何处理nors?I$nors+=1;在$nors=$row->count下;或者只是将$NOR放入insert?不要自己生成
$NOR
。让MySQL为你做吧。不需要代码,它解决了当前方法中的许多问题。请参阅@andrewsi的答案。mysql_*函数已被弃用,您是从哪里了解到这一点的?@ceejayoz我应该在insert中写些什么$query=“插入到成员值(““$user.”、“.md5($pass.”、“$nama.”、“$ALMAT.”、“$hp.”、“$SEXT.”、“$email.”)之类?是的,我对ID使用自动增量。但我不知道