数据库信息正确且有效,我已经测试了好几次。数据库与我试图从中提取数据的表一起存在。我在数据库中有虚拟信息,这是我的代码来检查数据库“网络”中的用户,表“用户”:
<?php
require 'core/init.php';
if (empty($_POST) === false){
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'You need to enter a username and password.';
} else if (user_exists($username) === false) {
$errors[] = 'Username does not exists. Have you registered?';
} else if (user_active($username) === false) {
$errors[] = 'Your account is not activated. Please check your email!';
} else {
}
print_r($errors);
}
?>
这是函数“user_exists($username)”的代码
<?php
function user_exists($username) {
$username = sanitize($username);
return (mysql_result(mysql_query("SELECT COUNT('user_id') FROM 'users' WHERE 'username' = '".$username."'"), 0) === 1) ? true : false;
}
function user_active($username) {
$username = sanitize($username);
return (mysql_result(mysql_query("SELECT COUNT('user_id') FROM 'users' WHERE 'username' = '".$username."' AND 'active' = 1"), 0) === 1) ? true : false;
}
?>
清理函数:
<?php
function sanitize($data) {
return mysqli_real_escape_string($data);
}
?>
这是我的问题:
当我使用虚拟信息登录时 - 用户名;密码(通过 phpmyadmin 进行 md5 散列)如果显示错误:
'Username does not exists. Have you registered?'
我试过使用不同的数据库,不同的用户..没有任何效果..帮助!
最佳答案
对列名和表名使用反引号,而不是引号。
"SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '".$username."'")
return (mysql_result(mysql_query("SELECT COUNT('user_id')
FROM 'users' WHERE 'username' = '".$username."'"), 0) === 1) ? true : false;
}
mysql_results 返回单元格或 false,因此永远不会达到条件 ===1
以上。
Returns the contents of one cell from a MySQL result set on success, or FALSE on failure.
return (mysql_result(mysql_query("SELECT COUNT('user_id')
FROM 'users' WHERE 'username' = '".$username."'"), 0) == false) ? false: true;
}
您还连接了 mysql
并在 sanitize
函数中使用了 mysqli_real_escape_string
。不要混合它们。
关于php 没有从数据库中获取用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20433465/