نمایش نتایج: از شماره 1 تا 10 , از مجموع 49

موضوع: معرفی توابع و کلاس های کاربردی php

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #21
    عضو انجمن rezaonline.net آواتار ها
    تاریخ عضویت
    Apr 2012
    محل سکونت
    Sanandaj | Tehran
    نوشته ها
    939
    تشکر تشکر کرده 
    1,556
    تشکر تشکر شده 
    2,338
    تشکر شده در
    1,230 پست

    Lightbulb پاسخ : کلاس استاتیک کار با دیتابیس mysql

    يه دست پخت ديگه از خودم .
    خيلي ها شايد از روش سنتي براي اتصال به ديتابيس و کوئري استفاده ميکنن.
    و شايد خيلي هاتون از mysqli هيچ وقت استفاده نکردين! جالبه بدونين mysqli سرعت قابل توجهي در مقابل mysql داره . (توي پرانتز mysqli هم براي ارتباط با ديتابيس MySql استفاده ميشه!)
    خب من دو تا کلاس استايک mysql , mysqli براي ارتباط با ديتابيس نوشتم .
    از هر کدوم که خواستين استفاده کنين هر وقتي هم دوست داشتين ميتونين بينشون سويچ کنين


    کلاسها رو ميذارم . اول بايد يکي از کلاسهاي زير رو توي برنامهتون include کنين


    کلاس mysql
    کد PHP:
    class db {            static private function _construct(){     @mysql_connect(dbhost,dbuser,dbpass) or die('<h1>error in connect db');      @mysql_select_db(dbname) or die('<h1>error in select db');    }           static public function set_utf8(){      self::_construct();       mysql_query("SET NAMES 'utf8'");    }      static public function escape($x){     if(function_existes(mysql_real_escape_string))         return mysql_real_escape_string($x);           else      return $x;    }            static public function q($x){      self::set_utf8();         return @mysql_query($x);     }            static public function get($x){      $result self::q($x);          $out = array();      $i 0;      while($row mysql_fetch_object($result)){     $i++;     $out[$i] = $row;     }      return $out;     }         static public function q_af($x){    self::q($x);     return mysql_affected_rows();     }           static public function close(){    @mysql_close(self::_construct());     return 1;    }     static private function _destruct(){     return;       }} 



    کلاس mysqli
    کد PHP:
    class db {        static private $mysqli null;              static private function _construct(){       @self::$mysqli = new mysqli(dbhost,dbuser,dbpass,dbname) ;        if(self::$mysqli->connect_error)         die('<h1>error in connect db');         }                 static public function set_utf8(){         self::_construct();        @self::$mysqli->query("SET NAMES 'utf8'");         }                  static public function escape($x){         if(function_existes(mysqli_real_escape_string))         return mysqli_real_escape_string($x);         else            return $x;        }                static public function q($x){       self::set_utf8();         return @self::$mysqli->query($x);        }                  static public function get($x){         $result self::q($x);          $out = array();          $i 0;             while($row = @$result->fetch_object()){       $i++;            $out[$i] = $row;            }           return $out;         }         /       static public function q_af($x){        self::q($x);         return self::$mysqli->affected_rows;        }                 static public function close(){        self::$mysqli->close();         return 1;    }          static private function _destruct(){         return;         }} 

    روش استفاده ابتدا يکي از کلاسهاي زير رو توي يه فايلي بذاريد و توي مثلاً فايل config.php پروژهتون include کنين.
    سپس بايد 4 تا ثابت تعريف کنين مثل مثال زير
    کد PHP:
    define('dbname','reza19');
    define('dbuser','root');
    define('dbpass','');
    define('dbhost','127.0.0.1'); 

    حالا هرجا خواستين به ديتابيس کوئري بدين از متد زير استفاده کنين
    کد PHP:
    db::q("INSERT INTO `cat` VALUES (NULL, 'uri', 'توضيحات', 'نام')"



    براي راحتيه شما يه get هم اضافه کردم که هروقت select داشتين از اين استفاده کنين بهتره (چون خودش fetch ميکنه)
    کد PHP:
    $get db::get('select * from comment limit 10');

    print_r($get);

    foreach(
    $get as $row
       echo 
    $row->id.'----'.$row->name.'<br>'
    ، البته واکشي رو بصورت object ميده بيرون

    بعضي وقتهام که ميخوايد يه insert يا update انجام بديد يه affected row ميخوايد که مثلاً تعداد سطرهاي تغيير کرده رو نشون ميده
    که بايد چک کنين اگه بزرگتر از 0 بود تغييرات انجام شده در غير انصورت تغييرات انجام نشده براي اينکار از متد زير استفاده کنيد
    کد PHP:
    $resultdb::q_af("INSERT INTO `cat` VALUES (NULL, 'uri', 'توضيحات', 'نام')");if($result>0)    echo 'تغغيرات ثبت شد';  else  echo 'تغييرات ثبت نشد'
    * توي کلاسها چارست پيشفرض روي utf8 هست .
    * نکته پاياني اينکه کلاسهاي استاتيک نياز به نمونه گيري ندارن


    با تشکر رضا شيخله

  2. تعداد تشکر ها ازrezaonline.net به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. درخواست افزونه پیش فاکتور و فاکتور وردپرس
    توسط Jai در انجمن درخواست انواع ماژول،پلاگین،قالب،امکانات سفارشی
    پاسخ ها: 2
    آخرين نوشته: February 13th, 2017, 10:36
  2. پاسخ ها: 21
    آخرين نوشته: June 11th, 2016, 12:59
  3. پاسخ ها: 0
    آخرين نوشته: December 26th, 2015, 11:40
  4. توجه توجه .نویسندگی سایت های جور وا جور .توجه توجه
    توسط ko9ol30 در انجمن به دنبال کار هستم
    پاسخ ها: 0
    آخرين نوشته: June 20th, 2015, 12:21
  5. درخواست سرور مجازی ویندوز برای تورنت و تورنت دادن و گرفتن
    توسط Daniel4u در انجمن درخواست سرور مجازی
    پاسخ ها: 9
    آخرين نوشته: September 21st, 2012, 11:24

مجوز های ارسال و ویرایش

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