[英]Fatal error: Call to a member function query() on a non-object
我有这个错误:
SQLSTATE [](空)(严重性0)致命错误:在第50行的/.../functions.php中的非对象上调用成员函数query()
第50行:
foreach($this->sqlDbKowsar->dbh->query($sql) as $row)
DB_Functions
类:
<?php
class DB_Functions {
private $sqlDbKowsar;
// constructor
function __construct() {
require_once 'DB_Connect.php';
// connecting to database
$this->sqlDbKowsar = new DB_Connect();
$this->sqlDbKowsar->connect();
}
// destructor
function __destruct() {
}
function getSimpleSearch($title,$cat,$start_end){
$start_and_end = explode("-",$start_end);
$cat = $this->getCategories($cat);
$array_of_cat = explode(",",$cat);
$sql = "select * from (
select *,ROW_NUMBER() OVER (ORDER BY GoodMainCode) as row from [SarMem].[dbo].[Book_Data1] WHERE GoodName LIKE ' %$title% ' and
GroupCode IN (" . implode(",",$array_of_cat) . ") ) a
where a.row > $start_and_end[0] and a.row <= $start_and_end[1] ";
$mjson = array();
foreach($this->sqlDbKowsar->dbh->query($sql) as $row){
$arr = array(
'GoodMainCode'=>persian_sql_to_php($row['GoodMainCode'])
);
array_push($mjson,$arr);
}
//added
foreach($mjson as $v){
if(!isset($result[$main_good_code = $v['GoodMainCode']])){
$result[$main_good_code = $v['GoodMainCode']] = $v;
}
else
$result[$main_good_code = $v['GoodMainCode']]['amount'] += $v['amount'];
}
return $result ;
}//end simple search function
}
?>
DB_Connect
类:
class DB_Connect {
public $dbh;
// constructor
function __construct() {
}
// destructor
function __destruct() {
// $this->close();
}
// Connecting to database
public function connect() {
require_once 'config.php';
try {
$hostname = DB_HOST ;
$dbname = DB_DATABASE;
$port = 1433;
$this->dbh = new PDO ("dblib:host=$hostname;dbname=$dbname;charset=UTF-8",DB_USER, DB_PASSWORD);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
我怎么了?
首先尝试像这样编辑DB_connect类:
class DB_Connect {
public $dbh;
// constructor
function __construct() {
require_once 'config.php';
try {
$hostname = DB_HOST ;
$dbname = DB_DATABASE;
$port = 1433;
$this->dbh = new PDO ("dblib:host=$hostname;dbname=$dbname;charset=UTF-8",DB_USER, DB_PASSWORD);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
// destructor
function __destruct() {
// $this->close();
}
// Connecting to database
public function connect() {
return $this->dbh;
}
}
然后在DB_Functions中编辑
function __construct() {
require_once 'DB_Connect.php';
// connecting to database
$this->sqlDbKowsar = new DB_Connect();
$this->sqlDbKowsar->connect();
}
像这样
private $con;
function __construct() {
require_once 'DB_Connect.php';
// connecting to database
$this->sqlDbKowsar = new DB_Connect();
$this->con = $this->sqlDbKowsar->connect();
}
然后在foreach循环中编辑到
foreach($this->con->query($sql) as $row)
我没有测试实际的代码,所以请告诉我问题是否仍然存在
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.