-3

こんにちは、私は独自の DB クラスを作成していますが、問題が発生しました。これが私のDBクラスです

class Mysql {

    var $connect;

    function ConnectDB() {
        $this->connect = mysql_connect(SERVER, USER, PASS) or die(mysql_error());
        mysql_select_db(DB_NAME, $this->connect) or die(mysql_error());
    }

    function IsLogin() {
        if (isset($_SESSION['id']) && isset($_SESSION['rollno'])) {
            $id     = $_SESSION['id'];
            $rollno = $_SESSION['rollno'];
            $query  = "SELECT student_rollno FROM" . TABLE_USER . " WHERE student_email='$id'";
            $result = mysql_query($query, $this->connect);
            $row    = mysql_fetch_assoc($result);
            if (!$result || mysql_num_rows($query) < 1 || $row['student_rollno'] != $rollno) {
                return false;
            }
        }
        return true;
    }
}

;
$database = new Mysql;

db クラスは、これら 2 つと他のいくつかの関数で構成されています...IsLogin()関数は機能しています。問題は、これclass.pageを別のスクリプトに含めたことですが、使用mysql_real_escape_string($string, $database->connectDB());すると...

警告: mysql_real_escape_string() は、パラメーター 2 がリソースであると想定しています。25 行目の C:\xampp\htdocs\admin\input_validate.php で指定された null です。

4

1 に答える 1

0
function ConnectDB() {
    $this->connect = mysql_connect(SERVER, USER, PASS) or die(mysql_error());
    mysql_select_db(DB_NAME, $this->connect) or die(mysql_error());
}

次のようになります。

function ConnectDB() {
    $this->connect = mysql_connect(SERVER, USER, PASS);
    if(!$this->connect){
        die(mysql_error());
    }
    $selectdb = mysql_select_db(DB_NAME, $this->connect);
    if(!$selectdb){
        die(mysql_error());
    }
    return $this->connect;
}

基本的に return ステートメントが欠落しているため、メソッドは db ではなく null を返します。

mysql_* はメンテナンスされなくなったため、mysqli または PDO への移行を検討してください。

于 2012-12-01T09:15:31.913 に答える