我有一个简单的PHP登录功能。在这个函数中,我通过创建一个从表中选择用户名并计算返回的行数的MySQL查询来检查用户是否存在。当我知道表包含用户名这一事实时,我遇到查询返回null的问题。
这是我的代码。
function login($user_name, $password) {
$db1 = new DB_CONNECT();
$db1->connect();
$query = "SELECT user_name FROM users WHERE user_name = '$user_name'";
$result = $db1->makeAQuery($query);
if (mysql_num_rows($result) == 1) {
//check the password
}
else {
//no user exist
}
}
我知道进入的用户名和密码是可以的,我在将它们发送到函数之前修剪任何空格。我知道数据库连接正在工作,因为它适用于我的其余PHP代码。我得到的唯一错误是提到mysql_num_rows“期望参数1是资源,null给定”
数据库类
class DB_CONNECT {
function connect() {
// import database connection variables
require_once __DIR__ . '/db_config.php';
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
// Selecing database
mysql_select_db(DB_DATABASE, $con) or die(mysql_error());
}
function makeAQuery($query) {
$result = mysql_query($query) or die(mysql_error());
}
function close() {
// closing db connection
mysql_close();
}
}
答案 0 :(得分:0)
这应该有效:
"SELECT user_name FROM users WHERE user_name = '".$user_name."'";
另外
改变这个:
function makeAQuery($query) {
$result = mysql_query($query) or die(mysql_error());
}
到
function makeAQuery($query) {
$result = mysql_query($query) or die(mysql_error());
return $result;
}
答案 1 :(得分:-1)
也许尝试删除查询中=之间的空格。
"SELECT user_name FROM users WHERE user_name='$user_name'"
您的脚本可能返回null,因为查询无法运行。