1

シンプルな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();
    }
}
4

2 に答える 2

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;
} 
于 2013-03-14T14:06:57.293 に答える
-1

たぶん、クエリの=の間のスペースを削除してみてください。

"SELECT user_name FROM users WHERE user_name='$user_name'"

クエリを実行できなかったため、スクリプトがnullを返している可能性があります。

于 2013-03-14T13:40:44.193 に答える