我对OOP php很陌生,但是现在已经进行了程序编码。这是一种完全不同的编码方式(至少对我而言),因此我无法解决这个问题:
基本上,我需要提取MySQL数据并将其显示在表中。现在,我有一个类,它DBQuery
具有两个函数-一个用于查询数据并将其存储在数组中,另一个用于使用数组中的内容呈现表。
如果我var_dump()
从查询类数组,我应该从数据库中获取内容。但是,如果我在displayTable()
函数中执行相同操作,则为空。但是,我在两个函数中都制作了一个很好的$testvar
数组var_dump()
,因此在处理$data
数组时可能会出错,导致它在某个时候破坏自身,或者我没有以正确的方式传递它。
我已经为此苦苦挣扎了3天,而且我确定我在某处缺少一个重要细节-只是无法查明。
我的DBQuery类:
class DBQuery extends dbc {
private $query;
private $testvar = array('testing one','testing two','testing three');
private $data = array();
public function __construct($sqlQuery) {
$testvar = $this->testvar;
$data = $this->data;
$this->query = $sqlQuery;
$result = $this->connect()->query($sqlQuery) or die('Database error');
$numRows = $result->num_rows;
if ($numRows > 0) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
var_dump($data); // ***** THIS HAS CONTENT *****
}
}
public function displayTable() {
var_dump($this->testvar); // ***** THIS HAS CONTENT *****
var_dump($this->data); // ***** THIS IS EMPTY *****
}
}
我的看法是:
<?php
$query = new DBQuery("SELECT * FROM users");
$query->displayTable();
?>
我在这里做错了什么?:)
数组分配始终涉及值复制。
因此,此行正在复制数组,而不是创建“指针”或“引用”:
$data = $this->data;
在你的__construct
,改变的每次出现$data
,以$this->data
和为你想让它会奏效。或者,您可以执行以下操作:
$data = &$this->data;
这将创建参考,但只会使情况更加混乱。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句