Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 全局Mysqli连接的问题_Php_Mysqli - Fatal编程技术网

Php 全局Mysqli连接的问题

Php 全局Mysqli连接的问题,php,mysqli,Php,Mysqli,我的mysqli连接有问题。我有三个类文件和一个配置文件。主类文件是我初始化mysqli连接的地方,其他两个类文件扩展了主类,但是连接没有被继承,我在进行查询时出错 config.php <?php include '-classes/Application.php'; include '-classes/class1.php'; include '-classes/class2.php'; define('DBHOST', '<HOST>'); define('DBUSER'

我的mysqli连接有问题。我有三个类文件和一个配置文件。主类文件是我初始化mysqli连接的地方,其他两个类文件扩展了主类,但是连接没有被继承,我在进行查询时出错

config.php

<?php
include '-classes/Application.php';
include '-classes/class1.php';
include '-classes/class2.php';
define('DBHOST', '<HOST>');
define('DBUSER', '<USER>');
define('DBPASS', '<PASS>');
define('DBNAME', '<NAME>');
$app = new Application();
$c1 = new Class1();
$c2 = new Class2();
$c1->usernameExists('username');
Class1和Class2.php

class Class1 extends Application{
    public function usernameExists($username) {
        $query = "SELECT `username` FROM `account` WHERE `username`='$username'";
        $result = mysqli_query($this->connect, $query ) or die(mysqli_error($this->connect));
        if(mysqli_num_rows($result) == 1) return true;
        return false;
}
有时我会出现以下错误: 警告:mysqli_query()要求参数1为mysqli,第行class1.php中给出的为null#


有时我会完全得不到回应

如果您想要在整个类上使用连接,那么首先定义变量

class Application {
    [private | public] $connect;

    function __construct(){
        # Establish Connection to database
        $this->connect = mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME) or die("Failed to connect with MySQL: ".mysqli_connect_error());
    }
}
此外,如果使用die管理异常,则不需要将变量重新分配给另一个变量


如果您只想在类内访问变量$connect,则将其定义为private;如果您想在类外使用变量$connect,则将其定义为public。

如果您想在整个类上使用连接,则首先定义该变量

class Application {
    [private | public] $connect;

    function __construct(){
        # Establish Connection to database
        $this->connect = mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME) or die("Failed to connect with MySQL: ".mysqli_connect_error());
    }
}
此外,如果使用die管理异常,则不需要将变量重新分配给另一个变量



如果您只想在类内访问变量$connect,则将其定义为private;如果您想在类外使用变量$connect,则将其定义为public。

为什么要继承该连接?你有三个对象,每个对象都有自己的连接。你确定它在你的
if()
中连接正确吗?@u\u mulder我以前做过这个。我这么做的唯一原因是因为它不再适用于我,我不明白为什么。通常,变量由父类传递。如果它们是用一个值设置的,它们将被继承。你没有在_构造函数之外定义
connect
,所以类不知道它应该是私有的、公共的还是受保护的。@NathanRobb我很确定。这样做已经很长时间了。为什么要继承连接?你有三个对象,每个对象都有自己的连接。你确定它在你的
if()
中连接正确吗?@u\u mulder我以前做过这个。我这么做的唯一原因是因为它不再适用于我,我不明白为什么。通常,变量由父类传递。如果它们是用一个值设置的,它们将被继承。你没有在_构造函数之外定义
connect
,所以类不知道它应该是私有的、公共的还是受保护的。@NathanRobb我很确定。这样做已经有很长一段时间了。定义变量的类型:private或public,根据您的需要。天哪,谁否决了这个,您知道PHP吗?很明显,他只是说要在公开还是私人之间做出选择。哇。我忘记了在第一个实例中指定类型,但是,是的,如果你知道任何PHP,你知道类中的一个变量需要一个类型。代码是在下一票后编辑的,以前在$connect之前没有任何内容。所以这并没有真正解决我的问题。。。事情是这样的。。。我正在尝试限制我正在建立的连接的数量。我的服务器每小时只允许每个用户10个连接。这将是一个包含大量类文件的大型应用程序。我怎样才能在不超过这个限制的情况下进行全局连接呢?根据需要定义变量的类型:private或public?很明显,他只是说要在公开还是私人之间做出选择。哇。我忘记了在第一个实例中指定类型,但是,是的,如果你知道任何PHP,你知道类中的一个变量需要一个类型。代码是在下一票后编辑的,以前在$connect之前没有任何内容。所以这并没有真正解决我的问题。。。事情是这样的。。。我正在尝试限制我正在建立的连接的数量。我的服务器每小时只允许每个用户10个连接。这将是一个包含大量类文件的大型应用程序。我怎样才能在全球范围内进行连接而不超过该限制?