PHP - Mysqli Error



当我去网站URL时,我得到这个"Mysqli错误"。这是页面上显示的唯一文本。我读到它与mysqli()函数有关。我已经添加了或死("错误")。mysqli_error($GLOBALS['mysqli_connection'])到一些mysqli(),但这并没有解决问题。这是我唯一拥有这些函数的PHP文件的代码:

<?php
require_once 'config.php';
class DB_Functions_GCM {
    //put your code here
    // constructor
    function __construct() {
        // connecting to database
        $GLOBALS['mysqli_connection'] = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) or die("Mysqli Error " . mysqli_error($GLOBALS['mysqli_connection']));
    }
    // destructor
    function __destruct() {
    }
    public function connectDefaultDatabase() {
        $GLOBALS['mysqli_connection'] = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE) or die("Mysqli Error " . mysqli_error($GLOBALS['mysqli_connection']));
        return $GLOBALS['mysqli_connection'];
    }
    public function selectDatabase($db) {
        mysqli_select_db($GLOBALS['mysqli_connection'], $db);
    }
    public function closeDatabase() {
        mysqli_close($GLOBALS['mysqli_connection']);
    }
    public function connectNewDatabase($host, $user, $password, $dbname = "") {
        closeDatabase();
        if ($dbname != "" && $dbname != null) {
            $GLOBALS['mysqli_connection'] = mysqli_connect($host, $user, $password, $dbname) or die("Mysqli Error " . mysqli_error($GLOBALS['mysqli_connection']));
        } else {$GLOBALS['mysqli_connection'] = mysqli_connect($host, $user, $password) or die("Mysqli Error " . mysqli_error($GLOBALS['mysqli_connection']));
        }
        return $GLOBALS['mysqli_connection'];
    }
/**
 * Storing new user
 * returns user details
 */
/**
 * Get user by email and password
 */
    public function getUserByEmail($email) {
        $result = mysqli_query($GLOBALS['mysqli_connection'], "SELECT * FROM gcm_users WHERE email = '$email' LIMIT 1");
        return $result;
    }
    public function getUserByName($username) {
        $result = mysqli_query($GLOBALS['mysqli_connection'], "SELECT * FROM gcm_users WHERE name = '$username' LIMIT 1");
        return $result;
    }
    public function getUserById($id) {
        $result = mysqli_query($GLOBALS['mysqli_connection'], "SELECT * FROM gcm_users WHERE id = '$id' LIMIT 1");
        return $result;
    }
    /**
     * Getting all users
     */
    public function getAllUsers() {
        $result = mysqli_query($GLOBALS['mysqli_connection'], "select * FROM gcm_users");
        return $result;
    }
    /**
     * Check user exists or not
     */
    public function checkUserById($id) {
        $result = mysqli_query($GLOBALS['mysqli_connection'], "SELECT gcm_regid from gcm_users WHERE gcm_regid = '$id'");
        $no_of_rows = mysqli_num_rows($result);
        if ($no_of_rows > 0) {
            return true;
        } else {
            return false;
        }
    }
    public function deleteUserById($id) {
        $result = mysqli_query($GLOBALS['mysqli_connection'], "DELETE FROM gcm_users WHERE gcm_regid = '$id'");
        if ($result) {
            return true;
        } else {
            return false;
        }
    }
    public function storeUser($gcm_regid, $instanceId, $name, $email) {
    echo "$gcm_regid";
        // insert user into database
        $result = mysqli_query($GLOBALS['mysqli_connection'], "INSERT INTO gcm_users(name, email, gcm_instance_id, gcm_regid, created_at) VALUES('$name', '$email', '$instanceId', '$gcm_regid', NOW())");
        // check for successful store
        if ($result) {
            // get user details
            $id = mysqli_insert_id($GLOBALS['mysqli_connection']);
            // last inserted id
            $result = mysqli_query($GLOBALS['mysqli_connection'], "SELECT * FROM gcm_users WHERE id = $id") or die("Error " . mysqli_error($GLOBALS['mysqli_connection']));
            // return user details
            if (mysqli_num_rows($result) > 0) {
                return mysqli_fetch_array($result);
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
}
?>

我在这里做错了什么?有什么建议吗?

如果mysqli连接失败,返回值为布尔值FALSE,不能用作mysqli_error()的参数。这就是为什么有mysqli_connect_error()。例如

$con = mysqli_connect([..snip..]) or die (mysqli_error($con));

想想看。$con只有在整个右侧操作完成后才能得到一个值。但是你试图使用右边的$con,这是不可能的。PHP不能/不会时间旅行。代码应该是

$con = mysqli_connect(...) or die(mysqli_connect_error());

错误# 2:

你正在定义一个对象。为什么要返回mysqli句柄并将其保存为PHP全局变量?这意味着您一次只能打开一个DB连接,因为您的对象的任何其他实例都将简单地覆盖/使用相同的全局变量。为什么不在对象中存储句柄?

public function dbconn() {
    $this->dbh = mysqli_connect(...) or die(mysqli_connect_error());
}
public function do_db_stuff()
   mysqli_query($this->dbh, "SELECT blah blah blah");
}

最新更新