IMANAZADI
یک شنبه 15 شهریور 1394, 17:45 عصر
با سلام
من قبلا از کدنویسی توی صفحات استفاده میکردم
اما واسه یه پروژه متوسط خیلی کدها تکراری میشه
الان میخوام برم به سمت oop
الان یه کلاس دیتابیس نوشتم میخوام بدونم مشکلاتش چیه ؟؟؟
البته اینم بگم خیلی از توابع هنوز نوشته نشده
اگر هم تمایل دارید میتونید توابعی که خودتون میدونید رو پست کنید
<?php
class db{
private $pdo;
private $host='localhost';
private $user='root';
private $password='';
private $database='tttt';
public $stmt;
private $err_msg;
public function __construct()
{
$this->open_connection();
}
public function open_connection()
{
try
{
$this->pdo=@new PDO("mysql:host=$this->host;dbname=$this->database;charset=utf8",$this->user,$this->password);
return true;
}
catch(PDOException $e)
{
$this->err_msg="Error : ". $e->getMessage();
return false;
}
}
public function __destruct()
{
$this->close_connection();
}
public function close_connection()
{
if (isset($this->pdo))
{
$this->pdo=null;
unset($this->pdo);
}
}
public function query($sql)
{
try{
$result= $this->pdo->query($sql);
$this->stmt=$result;
}
catch(PDOException $e)
{
$this->err_msg="Error : ".$e->getMessage();
}
}
public function prepare($sql,$param)
{
try
{
$stmt=$this->pdo->prepare($sql);
if($stmt->execute($param))
{
$this->stmt=$stmt;
return true;
}
return false;
}
catch(PDOException $e)
{
$this->err_msg="Error : ". $e->getMessage();
return false;
}
}
public function affectRow()
{
return $this->stmt->rowCount();
}
public function fetch_all()
{
return $this->stmt->fetchAll();
}
public function fetch()
{
return $this->stmt->fetch();
}
public function insert($table, $data)
{
try
{
$fields="`".implode("`, `",array_keys($data))."`";
$fieldsCount= count(array_values($data));
$placeholders='';
for ($i=0;$i<$fieldsCount;$i++)
{
$placeholders.=" ? , ";
}
$placeholders=rtrim($placeholders," ,");
$sql = "INSERT INTO `{$table}` ({$fields}) VALUES ({$placeholders})";
return ($this->prepare($sql,array_values($data)))?true:false;
}
catch(PDOException $e)
{
$this->err_msg="Error : ". $e->getMessage();
return false;
}
}
public function last_insert_id()
{
return $this->pdo->lastInsertId();
}
public function getError()
{
return trim($this->err_msg)!="" ? $this->err_msg : "";
}
}
ساخت نمونه از کلاس و تست اون
$db=new db();
$bb=$db->prepare("select * from MENU where id>=?",array(9));
echo ($bb?"true":"false")."<br>";
echo $db->affectRow()."<br>";
$r=$db->fetch_all();
foreach ($r as $k=>$v)
{
echo $v['label']."-".$v['link']."<br>";
}
$db->query("UPDATE MENU set label='test',link='linetest',sort='4' where id>10");
echo $db->affectRow()."<br>";
$tt=$db->insert('menu',array("label"=>"test1","link"=>"#link1","parent"=>"0","sort"=>""));
echo $db->affectRow()."<br>";
echo $db->last_insert_id()."<br>";
?>
من قبلا از کدنویسی توی صفحات استفاده میکردم
اما واسه یه پروژه متوسط خیلی کدها تکراری میشه
الان میخوام برم به سمت oop
الان یه کلاس دیتابیس نوشتم میخوام بدونم مشکلاتش چیه ؟؟؟
البته اینم بگم خیلی از توابع هنوز نوشته نشده
اگر هم تمایل دارید میتونید توابعی که خودتون میدونید رو پست کنید
<?php
class db{
private $pdo;
private $host='localhost';
private $user='root';
private $password='';
private $database='tttt';
public $stmt;
private $err_msg;
public function __construct()
{
$this->open_connection();
}
public function open_connection()
{
try
{
$this->pdo=@new PDO("mysql:host=$this->host;dbname=$this->database;charset=utf8",$this->user,$this->password);
return true;
}
catch(PDOException $e)
{
$this->err_msg="Error : ". $e->getMessage();
return false;
}
}
public function __destruct()
{
$this->close_connection();
}
public function close_connection()
{
if (isset($this->pdo))
{
$this->pdo=null;
unset($this->pdo);
}
}
public function query($sql)
{
try{
$result= $this->pdo->query($sql);
$this->stmt=$result;
}
catch(PDOException $e)
{
$this->err_msg="Error : ".$e->getMessage();
}
}
public function prepare($sql,$param)
{
try
{
$stmt=$this->pdo->prepare($sql);
if($stmt->execute($param))
{
$this->stmt=$stmt;
return true;
}
return false;
}
catch(PDOException $e)
{
$this->err_msg="Error : ". $e->getMessage();
return false;
}
}
public function affectRow()
{
return $this->stmt->rowCount();
}
public function fetch_all()
{
return $this->stmt->fetchAll();
}
public function fetch()
{
return $this->stmt->fetch();
}
public function insert($table, $data)
{
try
{
$fields="`".implode("`, `",array_keys($data))."`";
$fieldsCount= count(array_values($data));
$placeholders='';
for ($i=0;$i<$fieldsCount;$i++)
{
$placeholders.=" ? , ";
}
$placeholders=rtrim($placeholders," ,");
$sql = "INSERT INTO `{$table}` ({$fields}) VALUES ({$placeholders})";
return ($this->prepare($sql,array_values($data)))?true:false;
}
catch(PDOException $e)
{
$this->err_msg="Error : ". $e->getMessage();
return false;
}
}
public function last_insert_id()
{
return $this->pdo->lastInsertId();
}
public function getError()
{
return trim($this->err_msg)!="" ? $this->err_msg : "";
}
}
ساخت نمونه از کلاس و تست اون
$db=new db();
$bb=$db->prepare("select * from MENU where id>=?",array(9));
echo ($bb?"true":"false")."<br>";
echo $db->affectRow()."<br>";
$r=$db->fetch_all();
foreach ($r as $k=>$v)
{
echo $v['label']."-".$v['link']."<br>";
}
$db->query("UPDATE MENU set label='test',link='linetest',sort='4' where id>10");
echo $db->affectRow()."<br>";
$tt=$db->insert('menu',array("label"=>"test1","link"=>"#link1","parent"=>"0","sort"=>""));
echo $db->affectRow()."<br>";
echo $db->last_insert_id()."<br>";
?>