بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
این خطا Call to a member function query() on a non-object in ؟ (حل شد.)
مشکل این سورس چیه؟
class DB {
private $connection;
public function __construct() {
$this->connection = mysql_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
Line7 $this->connection->query("SET NAMES UTF-8");
}
public function query($sql) {
$result = $this->connection->query($sql);
$output = array();
while ($row = mysql_fetch_assoc($result)) {
$output[] = $row;
}
return $output;
}
public function query($sql) {
Line12 $result = $this->connection->query($sql);
$output = array();
while ($row = mysql_fetch_assoc($result)) {
$output[] = $row;
}
return $output;
}
پیام خطا
Fatal error: Call to a member function query() on a non-object in D:\Tset_web\cms\core\db.php on line 7
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
Mr Mehdi
11 سال پیش
+1
0
فکر کنم اینطوری هست خط 7
$this->connection->mysql_query("SET NAMES utf8");
ویرایش:
دقیق یادم نیست یا "SET NAMES utf8" بود یا " 'SET NAMES 'utf8" یا "SET NAMES UTF-8" اما چیزی که واضحه اون تیکه mysql_query که شما اشتباها query نوشتید
پاسخ به سوال
محسن موحد
11 سال پیش
+3
0
تابع mysql شی گرا نیست و شیئی بر نمیگردونه واسه همین اررور داده که connetion آبجکت نیست.
نکته ی دیگه , متد های داخل کلاس با this$ قابل دستیابی هستن.
یه نمونه واست از همین کلاسی که ساختی میارم.باید به این شکل عمل کنی:
class DB
{
private $connection;
public function __construct()
{
$this->connection = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('connection error');
mysql_select_db(DB_NAME) or die('db error');
$this->query("SET NAMES 'UTF8'");
}
public function query($sql)
{
return mysql_query($sql);
}
public function arrayQuery($sql)
{
$result = $this->query($sql);
$output = array();
if ($result && mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
$output[] = $row;
}
}
return $output;
}
}
پاسخ به سوال
محسن موحد
11 سال پیش
+3
0
خوب اگه بصورت mysqli میخوای کار کنی باید کلاس mysqli رو فراخوانی کنی با new و یک شیء ایجاد کنی.
به این شکل:
class DB
{
private $connection;
public function __construct()
{
$this->connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$this->connection->query("SET NAMES 'UTF8'");
}
public function query($sql)
{
$result = $this->connection->query($sql);
$output = array();
if($result && $result->num_rows > 0)
{
while ($row = $result->fetch_assoc())
{
$output[] = $row;
}
}
return $output;
}
}
construct__ درسته.تغییرش نده.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .