我在尝试让用户使用电子邮件或用户名登录。目前只有用户名被接受。我的工作SQL是这样的:用户名或电子邮件地址登录
$sql = "SELECT * FROM customers WHERE login = '".$username."' AND password = '".$password."'";
信息:
$username
有$_POST['username']
$password
值有md5($_POST['password'])
价值现在我想将其扩展到客户可以在他的个人资料中输入的电子邮件地址。我的SQL是这样的:
$sql = "SELECT * FROM customers WHERE (login = '".$username."' OR email = '".$username."') AND password = '".$password."'";
我会检查这个SQL有:
$result = mysql_query($sql);
mysql_num_rows($result)
但此刻它不工作。如果我在我的SQL中使用OR
,则mysql_num_rows
返回0
。可能是什么问题呢?还是有另一种更好的方式来实现这一目标?
你的代码很好,所以别的是错的。你需要使用phpMyAdmin或者直接在数据库上运行你的查询来确定是什么。同样不要忘记检查mysql_query调用的成功结果,并运行mysql_error来确定是否存在问题。 – 2013-05-08 09:12:47
所有'mysql_'函数都被弃用。此外,您的代码可用于[SQL注入](http://xkcd.com/327/)。而且,md5密码只比使用纯文本存储要好一些。 – Arjan 2013-05-08 09:13:21
“不起作用”是什么意思?提供更多细节。另外,当遇到查询问题时,总是使用'echo $ your_query'来确切地知道发送到数据库的内容。 – Jocelyn 2013-05-08 09:14:21