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

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

  1. #1
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    کرمانشاه
    پست
    290

    تبدیل به pdo

    سلام من یه کلاس برای ارتباط با دیتابیسم نوشته بودم که از روش سنتی musql استفاده میکرد حالا دارم تغییرش میدم به pdo حالا به یه سوال دارم اونم اینه که ایا برای همین pdo از اول بشینم کلاس بنویسم ؟ ! یا نه خودش مگه شئ گرا نیست از اول ننویسم از خودش مستقیم استفاده کنم . چون بعضی جاهاش واقعا به مشکل بر میخورم این کلاس قبلی من بوده
    <?php
    require_once 'defaults.php';
    class db {
    private $connection;
    public function __construct() {
    $this->connection = mysql_connect ( HOST, USER, PASS );
    mysql_select_db ( DB, $this->connection );
    mysql_query ( 'set names \'utf8\'' );
    mysql_set_charset ( 'utf-8' );
    }
    public function SendQuery($value) {
    if ($this->connection) {
    return mysql_query ( $value, $this->connection );
    }
    return false;
    }
    public function FetchQuery($value) {
    $myresults = array ();
    if ($this->connection) {
    $results = $this->SendQuery ( $value );
    if (mysql_num_rows ( $results ) > 0) {
    while ( $result = mysql_fetch_assoc ( $results ) ) {
    $myresults [] = $result;
    }
    }
    return $myresults;
    }
    }
    public function Affected(){
    $result=mysql_affected_rows($this->connection);
    return $result;
    }
    public function secure($value) {
    return mysql_real_escape_string ( $value );
    }
    }

  2. #2

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

    خوده PDO هم شئ گرا پیاده سازی شده پس زیاد فرقی نمیکنه ... این کلاس DB رو هم اگه با PDO دوباره بازنویسی بکنی فقط به خوانایی برنامت طبق قوانینی که خودت وضع کردی بیشتر کمک میکنه

  3. #3
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

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

    شما یه کلاس طراحی کن که از کلاس PDO اصلی ارث ببره و در این صورت میتونید از متدهای PDO و هم متدهای خودتون باهم استفاده کنید

  4. #4
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    کرمانشاه
    پست
    290

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

    خوب یه سوال مثلا من این متدو بخوام با prepare پیاده کنم
    public function SendQuery($value)


    چه چیزیو باید retun کنم ؟ execute رو ؟

  5. #5

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

    اول کوئری رو بساز بعد میتونی execute رو return بکنی ...

  6. #6
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    کرمانشاه
    پست
    290

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

    یه سوال دیگه اونجاهایی که میخوام پارامتر بدم چی ؟


    مثلا select * from mytable where `id`=id

    خوب ما اگر اینو توی متد بزاریم کار میکنه اما ایزوله نمیکنه چون ما اونار با bind قرار ندادیم راه حلش چیه ممنون میشم دوستا ن جواب بدن

  7. #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 صبح دلیل: آپدیت

  8. #8
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    کرمانشاه
    پست
    290

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

    با تشکر میدونستم کلاسهای اماده ای برای اینکار هست امابیشتر قصدم یادگیریه ای

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

  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 عصر

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

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