PDA

View Full Version : سوال: نحوه خواندن اطلاعات از کلاس



amirmohammad76
پنج شنبه 06 آبان 1395, 16:00 عصر
با سلام و عرض خسته نباشید . من کلاس زیر رو برای کار با دیتابیس نوشتم ولی در قسمت select مشکل دارم.

class bbsql {
protected $config;
protected $db;
public $status;
public $print;
function __construct($path) {
$this->config = $path;
require($this->config);
}
private function conn(){
$this->db = new mysqli(DBHOST,DBUSER,DBPASS,DBNAME);
if($this->db->errno){
print_r($this->db->error);
}
$this->db->set_charset('utf8');
}
public function insert($tbl,$vals){
$vals_array = implode("','", $vals);
$this->conn();
$query = "INSERT INTO $tbl VALUES('$vals_array')";
$sql = $this->db->query($query);
if($sql){
$this->status = "Successful";
} else {
$this->status = "Failed";
}
}
public function update($tbl,$arr,$where = null){
if($where !== null){
$where = " WHERE ".$where;
}
$this->conn();
foreach($arr as $key => $value){
$value = $this->db->real_escape_string($value);
$set_vals[] = "$key = '$value'";
}
$data = implode(', ', $set_vals);
$query = "UPDATE $tbl SET ".$data.$where;
$sql = $this->db->query($query);
if($sql){
$this->status = "Successfull";
} else {
$this->status = "Failed";
}
return $this->db->error;
}
public function select($tbl,$where = null,$limit = null){
$this->conn();
if(!empty($where)){
$where = " WHERE $where";
}
if(!empty($limit)){
$limit = " LIMIT $limit";
}
$query = "SELECT * FROM $tbl$where$limit";
$sql = $this->db->query($query);
if($sql->num_rows > 0){
while($row = $sql->fetch_array(MYSQLI_ASSOC)){
return $dt = $row;
}
}
}
}من میخوام که با استفاده از دستور زیر خروجی select رو هرجا که میخوام بخونم.
مثلا :

$cls->select('category','id=2',1);
echo $cls->dt['name'];
یعنی هرجا با دستور بالا به جای name چیزی که نوشته میشه از ستون جدول خوانده بشه و چاپ کنه.
بعد یه سوال دیگه هم اینه من در کد بالا در هر کدام از function ها دستور $this->conn() را وارد کردم که دستور اتصال به دستابیس هست . حالا راهی وجود داره که خود کلاس این اتصال را در هر function ایجاد کنه و لازم نباشه که هی در هر function فراخوانی شه؟!