2015-03-31 412 views
-1

我正在尝试为我的网站构建一个非常简单的登录系统(仅用于练习我正在进行的项目)。我决定实施它的方式是使用包含ID,名称,密码和用户名字段的表格,并在现有表格中搜索输入的信息。使用PHP查找SQL列的大小?

对于注册,它只是注入提供给表中的信息,并且我想分配一个客户ID号。我分配ID号的想法是简单地找到ID列的大小(它将包含ID的1,2,3..etc直到最后),并将新的注册分配给长度+1。为此,我需要一种方法来获得列的大小,但我只是学习PHP和SQL,所以我不确定语法是什么。

TLDR;有没有在SQL中的功能,我可以使用PHP来获取特定列的长度? (即存储在该列中的条目数?)

+2

你正在尝试重新创建SQL的'AUTO_INCREMENT'列属性。 – lafor 2015-03-31 23:00:19

+0

你想使用AUTO_INCREMENT,因为重新创建它就像你试图做的一样,最终会出现重复。 – developerwjk 2015-03-31 23:01:06

回答

1

将ID列设置为主要和自动增量。

你不会在你的查询中包含它自己创建的。

0

你可能会更好使用IDENTITY或AUTO_INCREMENT列。与检查的“列大小”的问题(由我假设你的意思是该列的行数)时,你可能最终插入重复的ID,例如:

ID | ... 
--------- 
1 
2 
4 

所以,如果你做了一个SELECT COUNT(ID)+1 FROM MyTable,它会返回4,并且你有一个ID冲突。

您可以执行类似SELECT MAX(ID)+1 FROM MyTable的操作,但即使如此,也可能存在并发问题(进程A和进程B都尝试同时运行该查询,然后才能插入新的ID 5)。你真的最好只是让你的RDBMS照顾它。

+0

听起来很完美,谢谢。我现在会研究它,就像我说我是新的,所以我非常感谢它! – briansrls 2015-03-31 23:01:25

+1

由于您使用PHP,我假设您使用的是MySQL。以下是如何在列上使用mySQL的AUTO_INCREMENT关键字的一个很好的例子。 http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html – Stenerson 2015-03-31 23:04:58