这感觉很明显...... 我已经在php中创建了这两个类,但我很难理解为什么该对象似乎没有被传回。
class DataAccess {
function dbconnect($query){
@ $db = new mysqli(MYHOST,MYDBUSER,DBUSERPASSWORD,MYDATABASE);
if (mysqli_connect_errno()) {
echo '<h1>there is an error with the database connection</h1>';
exit;
}
$result = $db->query($query);
$db->close();
return $result;
}
和...
class Run {
public $getdata;
public $jobdetails;
function __construct(){
$query = 'Select ID from jobs;';
$getdata = new DataAccess();
$jobdetails = $getdata->dbconnect($query);
}
function getJobList(){
print_r ($this->jobdetails);
}
}
我打电话使用:
$mything = new Run();
现在,如果我在dbconnect函数内部print_r($result);
它返回元数据,但是如果我将它传递回Run类,它就不会返回任何内容。
我错过了什么?
答案 0 :(得分:3)
$ jobdetails是__construct的本地,如果你想让它在实例本地,请使用$ this-&gt; jobdetails
答案 1 :(得分:2)
更改此
$jobdetails = $getdata->dbconnect($query);
对此:
$this->jobdetails = $getdata->dbconnect($query);
答案 2 :(得分:1)
首先,您不应为您运行的每个查询建立数据库连接。在构造函数中连接,然后在脚本结束时自动关闭连接
class DataAccess {
protected $_connection = null;
function __construct() {
$this->_connection = new mysqli(MYHOST,MYDBUSER,DBUSERPASSWORD,MYDATABASE);
if (mysqli_connect_errno()) {
echo '<h1>there is an error with the database connection</h1>';
exit;
}
}
function query($query){
return $this->_connection->query($query);
}
}
其次,您没有正确设置实例变量。
变化:
$jobdetails = $getdata->dbconnect($query);
要:
$this->jobdetails = $getdata->dbconnect($query);