-4

このコードに問題があるようです。渡してユーザーを確認する必要があり$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);
        }
4

3 に答える 3

3

クラスで、プロパティ $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();
}
于 2012-08-21T20:41:23.350 に答える
3

データベース接続がスコープ内にあるとは思いません。試す:

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

ただし、戻り値とエラー メッセージの確認に関するコメントを参照して、データベースが実際に何を返しているかを確認してください。

于 2012-08-21T20:42:08.530 に答える
2

DB 接続ハンドルを取得する方法がわかりませんが、おそらく次のように格納しているクラス プロパティから DB を参照する必要があります。

$this->db->prepare("SELECT * FROM users WHERE id=? AND pswd=?");
于 2012-08-21T20:41:48.577 に答える