从mysql更改为mysqli时,PHP未定义变量

时间:2015-08-04 17:12:12

标签: php mysql mysqli

我正在尝试重新编写一个旧的PHP代码。基本上,我试图将mysql转换为mysqli代码。

我有以下PHP代码: -

DB_Connect.php : -

<h2 style="font-size: 1.1em;">

DB_Functions.php

<?php
class DB_Connect {

 // constructor
    function __construct() {

    }

    // destructor
    function __destruct() {
        // $this->close();
    }

    // Connecting to database
    public function connect() {
        require_once 'include/Config.php';
        // connecting to mysql
        $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysqli_error());
        // selecting database
        mysqli_select_db($con,DB_DATABASE) or die(mysqli_error());

        // return database handler
        return $con;
    }

    // Closing database connection
    public function close() {
        mysqli_close($con);
    }

}

?>

我在文件DB_Functions.php的“<?php class DB_Functions { private $db; //put your code here // constructor function __construct() { require_once 'DB_Connect.php'; // connecting to database $this->db = new DB_Connect(); $this->db->connect(); } // destructor function __destruct() { } /** * Storing new user * returns user details */ public function storeUser($name, $email, $password) { $uuid = uniqid('', true); $hash = $this->hashSSHA($password); $encrypted_password = $hash["encrypted"]; // encrypted password $salt = $hash["salt"]; // salt $result = mysqli_query($db,"INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())"); // check for successful store if ($result) { // get user details $uid = mysqli_insert_id(); // last inserted id $result = mysqli_query("SELECT * FROM users WHERE uid = $uid"); // return user details return mysqli_fetch_array($result); } else { return false; } } /** * Get user by email and password */ public function getUserByEmailAndPassword($email, $password) { $result = mysqli_query($db,"SELECT * FROM users WHERE email = '$email'") or die(mysqli_error()); // check for result $no_of_rows = mysql_num_rows($result); if ($no_of_rows > 0) { $result = mysql_fetch_array($result); $salt = $result['salt']; $encrypted_password = $result['encrypted_password']; $hash = $this->checkhashSSHA($salt, $password); // check for password equality if ($encrypted_password == $hash) { // user authentication details are correct return $result; } } else { // user not found return false; } } /** * Check user is existed or not */ public function isUserExisted($email) { $result = mysqli_query($db,"SELECT email from users WHERE email = '$email'"); $no_of_rows = mysql_num_rows($result); if ($no_of_rows > 0) { // user existed return true; } else { // user not existed return false; } } /** * Encrypting password * @param password * returns salt and encrypted password */ public function hashSSHA($password) { $salt = sha1(rand()); $salt = substr($salt, 0, 10); $encrypted = base64_encode(sha1($password . $salt, true) . $salt); $hash = array("salt" => $salt, "encrypted" => $encrypted); return $hash; } /** * Decrypting password * @param salt, password * returns hash string */ public function checkhashSSHA($salt, $password) { $hash = base64_encode(sha1($password . $salt, true) . $salt); return $hash; } } ?> ”中收到以下错误“未定义变量db ”。

现在我不明白为什么这个错误是因为我在类中明确声明了变量并在构造函数中初始化了它。

请帮忙。

2 个答案:

答案 0 :(得分:0)

在您的对象中,您对数据库的引用为$this->db,而不是$db $db。因此,您只需将班级中的$this->db引荐更改为fieldXYZ

问候:)

答案 1 :(得分:0)

mysqli_query期望第一个参数是mysqli对象,但是您传入的是DB_Connection对象。