PHP登录函数脚本不起作用


PHP login function script not working

看起来我对这段代码有一些问题。我需要通过$uid$password来检查用户。我以为我做对了,但它仍然不起作用,我想不通。我是编程新手,非常感谢您的帮助!

更新。。

下面的函数工作得很好,但当我按照下面的方式修改它时,它会给我带来一些错误。。

public function getUser($uid, $password) {
    $result = mysql_query("SELECT * FROM users WHERE id = '$uid' AND pswd = '$password'") or die(mysql_error());
    $no_of_rows = mysql_num_rows($result);
    if ($no_of_rows > 0) {
        $result = mysql_fetch_array($result);
        return $result;    
    } else {
        return false;
    }
}

user_function.php

<?php
class DB_Functions {
    private $db;
    function __construct() {
        require_once 'db_connect.php';
        $this->db = new DB_Connect();
        $this->db->connect();
    }
    public function getUser($uid, $password) {
        $stmt = $db->prepare("SELECT * FROM users WHERE id=? AND pswd=?");
        $stmt->execute(array($uid, $password));
        return $stmt->fetch();
    }
}
?>

index.php

<?php
if (isset($_POST['tag']) && $_POST['tag'] != '') {
    $tag = $_POST['tag'];
    require_once 'include/db_functions.php';
    $db = new DB_Functions();
    $response = array("tag" => $tag, "success" => 0, "error" => 0);
    if ($tag == 'login') {
        // check for user
        $user = $db->getUser($_POST['id'], $_POST['pswd']);
        if ($user != false) {
            $response["success"] = 1;
            $response["user"]["id"] = $user["id"];
            echo json_encode($response);
        } else {
            $response["error"] = 1;
            $response["error_msg"] = "Incorrect email or password!";
            echo json_encode($response);
        }

我认为您的数据库连接不在范围内;尝试:

public function getUser($uid, $password) {
    $stmt = $this->db->prepare("SELECT * FROM users WHERE id=? AND pswd=?");
    $stmt->execute(array($uid, $password));
    return $stmt->fetch();
}

但是,请参阅有关检查返回值和错误消息的注释,以查看数据库实际返回的内容。

在类中,属性$db没有被正确引用。尝试更改

public function getUser($uid, $password) {
    $stmt = $db->prepare("SELECT * FROM users WHERE id=? AND pswd=?");
    $stmt->execute(array($uid, $password));
    return $stmt->fetch();
}

public function getUser($uid, $password) {
    $stmt = $this->db->prepare("SELECT * FROM users WHERE id=? AND pswd=?");
    $stmt->execute(array($uid, $password));
    return $stmt->fetch();
}

我不知道如何获得DB连接句柄,但您可能需要从类属性引用您的DB,该属性存储如下:

$this->db->prepare("SELECT * FROM users WHERE id=? AND pswd=?");