如何查询mysql中以前的3条记录?

时间:2012-12-22 18:05:20

标签: php mysql function user-defined-functions

我正在为课程建立一个简单的登录/注册网站。 (即没有md5,sha等)其中一个参数是不允许新注册的密码在注册时等于之前的3。我是写一个函数,如果是这样的话,返回true。我无法弄清楚如何做到这一点。我的数据库上的主键是user_id(自动递增)。这是一个函数,如果用户名已经存在,则返回true:

function user_exists ($username) {
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) 
    FROM `users` WHERE `username` = '$username'"), 0) == 1) ? true : false;}

我以为我会从这开始,添加一些代码只回顾前三个用户名

function returns true if password exists database
function password_exists ($password) {
$password = sanitize($password);
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) `FROM `users` 
WHERE `password` = '$password' AND `user_id <'$user_id' ORDER BY user_id DESC, LIMIT 3"), 0) ==  1) ? true : false ;

我是否试图用一个功能做太多事情?即我需要先在一个函数中隔离最后3个记录,然后搜索该集合吗?我应该添加一个按顺序编号条目的列吗?即如果有5个记录1,2,3,4,5和'2'被删除,那么该列将读取1,2,3,4。在我看来,搜索这种方式会更容易。任何帮助非常感谢!感谢

}

2 个答案:

答案 0 :(得分:0)

您可以通过嵌套选择表单来执行此操作:

SELECT x FROM (SELECT ...) as y;

您的内部选择(SELECT ...)将返回记录,按日期排序(最近的第一个)并且LIMIT为3.

您的外部选择将从内部选择中选择用户名。

如果&gt;返回0条记录,你知道用户名不好。

答案 1 :(得分:0)

这样做没有意义。
检查整个数据库或根本不检查。

此外,这样的功能将对安全性产生巨大影响,意味着这样的错误可能暗示某人的其他密码。

(如果家庭作业需要它,难怪为什么每个人都讨厌PHP。即使在课堂上,他们教你编写可怕的代码)