0

我正在尝试建立一个登录/注册系统,当你按下登录时,它应该说存在......

<?php
include 'core/init.php';


function user_exists($username){
$username = sanitize($uusername);
$query = mysql_query("SELECT COUNT (`user_id`) FROM `users` WHERE `username` = '$username'");

$result = mysql_query($query) or die(mysql_error());  // Check if query was successful
$row = mysql_fetch_array($result); // fetch the first row
return ($row[0] > 1);  // If there is one or more users with this name, return true.




}

这是应该使页面显示“存在”的代码:

<?php
include 'core/init.php';

if(user_exists('Zuzima') === true) {
echo 'exists';
}
die();

if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];

if(empty($username) === true || empty($password) === true){
    $errors[] = 'You need to a username and password.';
} else if (user_exists($username) === false) {
    $errors[] = 'We can\'t find that username. Have you registered?';
}
}
?>

请帮助我,我至少已经为此工作了 6 个月。

4

3 回答 3

2

如果有一个或多个具有此名称的用户,则返回 true。

所以不应该return ($row[0] > 1);只是return ($row[0] >= 1);

于 2013-05-22T01:32:30.137 回答
0

您必须为要在数组中使用的任何聚合设置别名。

SELECT COUNT (`user_id`)  AS userIdCount ...

返回单个列并使用行数来确定您的用户是否有记录会更容易。

此外,mysql_功能已被弃用。您需要使用PDOor mysqli_with 准备好的语句。

于 2013-05-22T01:32:09.363 回答
0

$query正在从 分配资源句柄,mysql_query然后您将该资源句柄作为字符串传递给mysql_query

$query = mysql_query("SELECT COUNT (`user_id`) FROM `users` WHERE `username` = '$username'");

$result = mysql_query($query) or die(mysql_error());

应该

$result = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'") or die(mysql_error())
于 2013-05-22T01:32:40.693 回答