无法在PHP类中向数组添加值

时间:2015-08-13 20:50:17

标签: php

我要做的是添加一个开始&结束我的SQL查询的计时器,以便我可以跟踪正在执行的查询数量和需要多长时间。

我使用我编写的PHP类来处理所有数据库连接和查询。它工作正常。我似乎无法将任何值写入$queries数组,这将节省查询所用的时间。

class db {

    public $queries = array(); // Can't write to this

    public function connect() {

        static $con;

        if (!isset($con)) { 
            $con = mysqli_connect('localhost','USER','PASS','DB');  
        }

        if ($con === false) {   
            mysqli_connect_error();     
        }

        return $con;

    } // end connect

    public function query($query) {

        $start = microtime(true); // Start here

        $con = $this->connect();

        $result = mysqli_query($con,$query);

        $queries[] = microtime(true) - $start; // Write to array

        return $result;

    }

    public function getCount() {
        return sizeof($this->queries);
    }

    public function getTime() {
        return number_format(array_sum($this->queries), 5);
    }

} // end db class

$db = new db;


$query = $db->query("SELECT * FROM table");

while($items = $query->fetch_assoc()) {
    // Do some stuff
}

echo 'Ran '.$db->getCount().' queries in '.$db->getTime().' sec.'; // Always returns 0

我知道我只是缺少一些简单的东西,我似乎无法找到它是什么。

2 个答案:

答案 0 :(得分:0)

$queries[]替换为$this->queries[]

答案 1 :(得分:0)

如果您想要访问对象成员,则需要使用$this

$this->$queries[] = microtime(true) - $start; // Write to array

同样,当你想要从中读取时,否则你正在访问方法本地的$queries变量。

请参阅:https://secure.php.net/manual/en/language.variables.scope.php