نمایش نتایج 1 تا 8 از 8

نام تاپیک: تبدیل به pdo

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #7
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    http://reza.biz
    پست
    858

    نقل قول: تبدیل به pdo

    بفرمایید اینم یه کلاسی که خودم نوشتم واسه pdo استفاده کنید
    /*
    * Simple MYSQL_PDO class
    *
    * @author : reza <info@rezaonline.net>
    *
    * usage :

    $db = new RxDB('mysql:dbname=mydatabase;host=localhost', 'db_username', 'db_password');
    //insert
    $af = $db->insert('tbl',array(
    'name'=>'reza',
    'age'=>30
    ));

    if($af>0)
    echo true;


    //update
    $id = 1;
    $af = $db->update('tbl',array(
    'name'=>'reza',
    'age'=>30
    ),'id=?' ,array($id));


    //delete
    $af = $db->delete('tbl','id=?',array($id));


    //query

    $row = $db->query("select * from user where id=? and title=?",array($id,$title))->row();

    $all = $db->query("select * from user")->all();


    //update , delete
    $db->query("update users set username=? where id=?")->execute(array($username,$id));


    //read
    $all = $db->get("users","`id` < ? limit 10",array($id))->all();

    $all = $db->get(array('id,username,password',"users"),"`id` < ? limit 10",array($id))->all();
    **/


    class RxDb
    {
    private $sql = NULL;
    private $params = array();

    private $method = '';

    public static $log = array();


    public $pdo = NULL;

    function __construct($_1,$_2,$_3)
    {
    $this->pdo = new PDO($_1,$_2,$_3);

    $this->pdo->query("set names utf8")->execute();
    $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    }
    public function query($sql,$params=array())
    {
    $this->sql = $sql ;
    $this->params = $params;
    $this->method = __FUNCTION__;

    return $this;
    }

    function get($tbl='',$condition='',$params=array())
    {
    if(is_array($tbl))
    {
    $f = $tbl[0];
    $tbl = $tbl[1];
    }
    else
    {
    $f = '*';
    }
    if(empty($condition))
    $c = '';
    else
    $c = " WHERE $condition ";
    $this->sql = "SELECT {$f} FROM `{$tbl}` {$c}";
    $this->params = $params;
    return $this;
    }

    function row($fetch='object')
    {
    $key = array(
    'object'=> PDO::FETCH_OBJ ,
    'array'=> PDO::FETCH_ASSOC ,
    'num'=> PDO::FETCH_NUM
    );


    $stmt = $this->pdo->prepare($this->sql);
    foreach($this->params as $key=>$val)
    {
    if(is_int($key))
    {
    $key = $key+1;
    $stmt->bindValue($key, $val);
    }
    else
    $stmt->bindParam($key, $val);
    }
    $stmt->execute();

    $this->logQuery();
    if($fetch == 'array')
    return $stmt->fetch(PDO::FETCH_ASSOC);
    else
    return $stmt->fetch(PDO::FETCH_OBJ);

    }

    function all($fetch='object')
    {
    $key = array(
    'object'=> PDO::FETCH_OBJ ,
    'array'=> PDO::FETCH_ASSOC ,
    'num'=> PDO::FETCH_NUM
    );

    $stmt = $this->pdo->prepare($this->sql);

    foreach($this->params as $key=>$val)
    {
    if(is_int($key))
    {
    $key = $key+1;
    $stmt->bindValue($key, $val);
    }
    else
    $stmt->bindParam($key, $val);
    }
    $stmt->execute();

    $this->logQuery();
    if($fetch == 'array')
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
    else
    return $stmt->fetchAll(PDO::FETCH_OBJ);

    }


    function execute($params=array())
    {
    if( ! empty($params))
    $this->params = $params;

    if(empty($this->params))
    {
    $ret = $this->pdo->prepare($this->sql);

    $this->logQuery();
    return $ret->execute();
    }
    else
    {
    $stmt = $this->pdo->prepare($this->sql);
    foreach($this->params as $key=>$val)
    {
    if(is_int($key))
    {
    $key = $key+1;
    $stmt->bindValue($key, $val);
    }
    else
    $stmt->bindParam($key, $val);
    }

    $ret =$stmt->execute();

    $this->logQuery();
    return $ret;
    }
    }




    protected function logQuery()
    {
    $qr = $this->sql ;
    if( ! empty($this->params))
    {
    $qr .=" | ";
    foreach($this->params as $key=>$val)
    $qr .= " {$key}=>{$val}";
    }

    self::$log[] = $qr;
    $this->params = array();
    $this->sql = '';
    }



    //query Builder
    function insert($tbl,$data=array())
    {
    $key = join(',',array_keys($data));

    $val = str_repeat('?,', intval(count(array_keys($data))));

    $val = trim($val,',');

    $qr = "INSERT INTO `{$tbl}` ($key) values($val) ";
    return $this->query($qr)->execute(array_values($data));
    }


    function update($tbl='',$data=array(),$condition=' 1=1',$params = array())
    {

    $qr = "update `{$tbl}` set ";

    $newData = array();
    foreach($data as $key=>$vals)
    {
    $qr .="`{$key}`=?,";
    $newData[] = $vals;
    }

    foreach($params as $row)
    $newData[] = $row;

    $qr = rtrim($qr,',');
    $qr .= " WHERE {$condition} ";

    return $this->query($qr)->execute(array_values($newData));
    }


    function delete($tbl='',$condition='',$params=array())
    {
    if( ! empty($condition))
    $wh = " where ({$condition})";
    else
    $wh = '';
    return $this->query("delete from `{$tbl}` {$wh}")->execute($params);
    }

    function __destruct()
    {
    unset($this->pdo);
    $this->pdo = NULL;
    }
    }



    نحوه استفاده
    $db = new RxDB('mysql:dbname=mydatabase;host=localhost', 'db_username', 'db_password');
    //insert
    $af = $db->insert('tbl',array(
    'name'=>'reza',
    'age'=>30
    ));

    if($af>0)
    echo true;


    //update
    $id = 1;
    $af = $db->update('tbl',array(
    'name'=>'reza',
    'age'=>30
    ),'id=?' ,array($id));


    //delete
    $af = $db->delete('tbl','id=?',array($id));


    //query

    $row = $db->query("select * from user where id=? and title=?",array($id,$title))->row();

    $all = $db->query("select * from user")->all();


    //update , delete
    $db->query("update users set username=? where id=?")->execute(array($username,$id));


    //read
    $all = $db->get("users","`id` < ? limit 10",array($id))->all();

    $all = $db->get(array('id,username,password',"users"),"`id` < ? limit 10",array($id))->all();
    آخرین ویرایش به وسیله rezaonline.net : دوشنبه 10 شهریور 1393 در 08:43 صبح دلیل: آپدیت

تاپیک های مشابه

  1. تبدیل این کلاس به pdo چجوریه؟
    نوشته شده توسط saeed-71 در بخش PHP
    پاسخ: 8
    آخرین پست: یک شنبه 22 تیر 1393, 12:07 عصر
  2. و باز هم تبدیل شمسی به میلادی!
    نوشته شده توسط vadood در بخش VB.NET
    پاسخ: 14
    آخرین پست: شنبه 03 اردیبهشت 1384, 01:05 صبح
  3. تبدیل تاریخ از میلادی به شمسی
    نوشته شده توسط omid1974 در بخش ASP.NET Web Forms
    پاسخ: 15
    آخرین پست: دوشنبه 29 فروردین 1384, 03:15 صبح
  4. تبدیل تاریخ از میلادی به شمسی و بر عکس
    نوشته شده توسط (امید) در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: پنج شنبه 02 مهر 1383, 07:38 صبح
  5. تبدیل دامین به آی پی
    نوشته شده توسط شب شکن در بخش امنیت در شبکه
    پاسخ: 6
    آخرین پست: پنج شنبه 04 اردیبهشت 1382, 21:59 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •