很多时间,花了,这里是我在:
$uname_query = mysql_query("SELECT username FROM blog_members WHERE username='".$username."'");
if ($uname_query == $username) {
$error[] = 'Username is already taken';
}
我正在尝试使用 SQL 查询 $uname_query
来提取表单中输入的 $username
,如果存在,则使用 if
语句显示错误(如果存在)。
因为它是现在编码的,所以我没有收到任何错误,但也没有任何功能。
我错过了什么?
最佳答案
你需要使用一个fetch。
$row = mysql_fetch_row($uname_query);
// $row[0] will contain the first column of the first row (username)
if ($row[0] == $username) { }
但是,您应该考虑使用 PDO 或 MySQLi,因为 MySQL api 已被弃用。如果用户提供了 $username,您还应该使用准备好的语句。
在 PDO 中你可以这样做:
$stmt = $pdo->prepare("SELECT username FROM blog_members WHERE username=?");
$stmt->execute(array($username));
// fetchColumn will return the first column of the first row (username)
if ($stmt->fetchColumn() == $username) { }
这通过提供不带 $username 的准备语句并将其绑定(bind)到 execute() 函数中来防止 SQL 注入(inject)。 PDO 最初也需要一些不同的设置,但这里有一个很好的教程:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
关于针对 MySQL 的 PHP 用户名验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023270/