کلاس PHP دسترسی به پایگاه داده MySQL

کلاس PHP دسترسی به پایگاه داده MySQL :

<?php

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */


class dbAccess {

       var $db_connect_id;
       var $query_result;
       var $row = array();
       var $rowset = array();
       var $num_queries = 0;

       //
       // Constructor
       //
       function dbAccess($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true) {

               $this->persistency = $persistency;
               $this->user = $sqluser;
               $this->password = $sqlpassword;
               $this->server = $sqlserver;
               $this->dbname = $database;

               if($this->persistency) {
                       $this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
               } else {
                       $this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
               }
               if($this->db_connect_id) {
                       if($database != "")     {
                               $this->dbname = $database;
                               $dbselect = @mysql_select_db($this->dbname);
                               if(!$dbselect) {
                                       @mysql_close($this->db_connect_id);
                                       $this->db_connect_id = $dbselect;
                               }
                       }
                       return $this->db_connect_id;
               } else {
                       return false;
               }
       }

       //
       // Other base methods
       //
       function destroy() {
               if($this->db_connect_id) {
                       if($this->query_result) {
                               @mysql_free_result($this->query_result);
                       }
                       $result = @mysql_close($this->db_connect_id);
                       return $result;
               } else {
                       return false;
               }
       }

       //
       // Base query method
       //
       function query($query = "", $transaction = FALSE) {
               // Remove any pre-existing queries
               unset($this->query_result);
               if($query != "") {
                       $this->num_queries++;
                       $this->query_result = @mysql_query($query, $this->db_connect_id);
               }
               if($this->query_result) {
                       unset($this->row[$this->query_result]);
                       unset($this->rowset[$this->query_result]);
                       return $this->query_result;
               } else {
                       return ( $transaction == END_TRANSACTION ) ? true : false;
               }
       }

       //
       // Other query methods
       //
       function numrows($query_id = 0) {
               if(!$query_id) {
                       $query_id = $this->query_result;
               }
               if($query_id) {
                       $result = @mysql_num_rows($query_id);
                       return $result;
               } else {
                       return false;
               }
       }
       function affectedrows() {
               if($this->db_connect_id) {
                       $result = @mysql_affected_rows($this->db_connect_id);
                       return $result;
               } else {
                       return false;
               }
       }
       function numfields($query_id = 0) {
               if(!$query_id) {
                       $query_id = $this->query_result;
               }
               if($query_id) {
                       $result = @mysql_num_fields($query_id);
                       return $result;
               } else {
                       return false;
               }
       }
       function fieldname($offset, $query_id = 0) {
               if(!$query_id) {
                       $query_id = $this->query_result;
               }
               if($query_id) {
                       $result = @mysql_field_name($query_id, $offset);
                       return $result;
               } else {
                       return false;
               }
       }
       function fieldtype($offset, $query_id = 0) {
               if(!$query_id) {
                       $query_id = $this->query_result;
               }
               if($query_id) {
                       $result = @mysql_field_type($query_id, $offset);
                       return $result;
               } else {
                       return false;
               }
       }
       function fetchrow($query_id = 0) {
               if(!$query_id) {
                       $query_id = $this->query_result;
               }
               if($query_id) {
                       $this->row[$query_id] = @mysql_fetch_array($query_id);
                       return $this->row[$query_id];
               } else {
                       return false;
               }
       }
       function fetchrowset($query_id = 0) {
               if(!$query_id) {
                       $query_id = $this->query_result;
               }
               if($query_id) {
                   $result = array();
                       unset($this->rowset[$query_id]);
                       unset($this->row[$query_id]);
                       while($this->rowset[$query_id] = @mysql_fetch_array($query_id)) {
                               $result[] = $this->rowset[$query_id];
                       }
                       return $result;
               } else {
                       return false;
               }
       }
       function fetchfield($field, $rownum = -1, $query_id = 0) {
               if(!$query_id) {
                       $query_id = $this->query_result;
               }
               if($query_id) {
                       if($rownum > -1) {
                               $result = @mysql_result($query_id, $rownum, $field);
                       } else {
                               if(empty($this->row[$query_id]) && empty($this->rowset[$query_id])) {
                                       if($this->fetchrow()) {
                                               $result = $this->row[$query_id][$field];
                                       }
                               } else {
                                       if($this->rowset[$query_id]) {
                                               $result = $this->rowset[$query_id][$field];
                                       } else if($this->row[$query_id]) {
                                               $result = $this->row[$query_id][$field];
                                       }
                               }
                       }
                       return $result;
               } else {
                       return false;
               }
       }
       function rowseek($rownum, $query_id = 0){
               if(!$query_id) {
                       $query_id = $this->query_result;
               }
               if($query_id) {
                       $result = @mysql_data_seek($query_id, $rownum);
                       return $result;
               } else {
                       return false;
               }
       }
       function nextid(){
               if($this->db_connect_id) {
                       $result = @mysql_insert_id($this->db_connect_id);
                       return $result;
               } else {
                       return false;
               }
       }
       function freeresult($query_id = 0){
               if(!$query_id) {
                       $query_id = $this->query_result;
               }

               if ( $query_id ) {
                       unset($this->row[$query_id]);
                       unset($this->rowset[$query_id]);

                       @mysql_free_result($query_id);

                       return true;
               } else {
                       return false;
               }
       }
       function error($query_id = 0) {
               $result["message"] = @mysql_error($this->db_connect_id);
               $result["code"] = @mysql_errno($this->db_connect_id);

               return $result;
       }
}
?>

 

 

ادامه مطلب…







کد php دریافت تعداد تمام پرس و جو های دیتابیس MySQL

کد php دریافت تعداد تمام پرس و جو های دیتابیس MySQL :

<?php
       $handle=@mysql_connect("localhost","root","");

       if (!$handle)
       {
               die("No connection to database");
       }

       echo 'Total number of all-time mysql-queries: '.getTotalNumberOfMySQLQuerys();


       //Returns integer-value of the total number of alltime mysql-calls that have been made
       function getTotalNumberOfMySQLQuerys()
       {
               //global mysql-status containing the number of querys has been renamed in newer versions of mysql
               $mysqlVersion=getMysqlVersion();

               //contact helper-function to receive the mysql-version
               if ($mysqlVersion()>=50002)
               {
                       $sql="SHOW GLOBAL STATUS LIKE 'Questions'";
               }
               else
               {
                       $sql="SHOW STATUS LIKE 'Questions'";
               }

               $result=@mysql_query( $sql );
               $row=@mysql_fetch_array( $result );
               return $row['Value'];
       }

       //helper function is needed to detect the exact mysql-version
       function getMysqlVersion()
       {
               $sql = 'SELECT VERSION() AS versionsinfo';
               $result = @mysql_query('SELECT VERSION() AS versionsinfo');
               $version = @mysql_result( $result, 0, "versionsinfo" );
               $match = explode('.',$version);
               return sprintf('%d%02d%02d',$match[0],$match[1],intval($match[2]));
       }
?>

 

ادامه مطلب…







آموزش گام به گام SQL – گام هشتم

تابع Avg در sql

تابع Avg در اسکیوال میانگین یک ستون عددی را برمیگرداند.

ساختار دستور avg به صورت زیر است :

    SELECT AVG(column_name) FROM table_name

تابع COUNT در اسکیوال

تابع COUNT در sql تعداد سطرهای موجود در یک فیلد را شمرده و مقدار آنرا بر می گرداند . به تابع count در اسکیوال ، تابع سطر شمار هم می گویند .

نکته مهم : تابع count در اس کیو ال ، فیلدهایی که مقدار آنها خالی یا تکراری باشد را نمی شمارد . برای شمارش کلیه فیلدها ( حتی تکراری ) باید قبل از نام ستون در دستور Count عبارت Distinct ذکر شود.

ساختار این دستور به صورت زیر است :

    SELECT COUNT(*) FROM table_name

ادامه مطلب…







آموزش گام به گام SQL – گام هفتم

محدودیت Check ,  SQL CHECK Constraint یا محدودیت های خاص در sql

از محدودیت Check یا محدودیت خاص در اس کیو ال زمانی استفاده میکنیم که بخواهیم برای یک فیلد، یک سری محدودیت خاص روی فیلد تعریف کنیم.

برای مثال : مقادیر داخل فیلد بایستی حتما بزرگتر از ۱۰ باشد در غیر اینصورت در هنگام ورود اطلاعات، کاربر با خطا مواجه گردد.

نکته : محدودیت Check را میتوان برای ستون و جدول تعریف کرد.

محدودیت CHECK هنگامی که جدول ساخته می شود

برای تعریف یک محدودیت Check در دستور create table ، روی یک ستون از دستور SQL زیر استفاده می کنیم:

CREATE TABLE Persons
(
P_Id int NOT NULL CHECK (P_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

ادامه مطلب…







آموزش گام به گام SQL – گام ششم

دستور CREATE DATABASE در sql

برای ایجاد یک پایگاه داده جدید از دستور CREATE DATABASE استفاده می شود.

ساختار دستور create database در اسکیوال به صورت زیر است:

    CREATE DATABASE database_name

برای ایجاد یک دیتابیس با نام mySite_db به صورت زیر عمل میکنیم :

    CREATE DATABASE mySite_db

دستور Create Table در sql

برای ایجاد یک جدول جدید در پایگاه داده sql ، از دستور Create Table استفاده می کنیم . برای ایجاد جدول در اسکیوال بایستی نکات زیر را در نظر گرفت :

تعیین یک نام منحصر به فرد برای جدول . ادامه مطلب…







آموزش گام به گام SQL – گام پنجم

دستور INNER JOIN در sql

خروجی دستور INNER JOIN در اس کیو ال از بین سطرهایی انتخاب میشود که حداقل یک رابطه در هر دو جدول وجود داشته باشد.

تفاوت دستور Join و دستور InnerJoin در performance آنها می باشد. نتیجه ی اجرای هر دوی آنها یکسان است اما دستور InnerJoin دارای Prformance و کارایی بالاتری می باشد و به همین دلیل توصیه می شود که از دستور InnerJoin استفاده شود.

شکل کلی این دستور به صورت زیر است که در آن کلمه ی کلیدی ON فیلد رابطه رو در دو جدول مشخص میکند :

    SELECT column_name(s)
    FROM table_name1
    INNER JOIN table_name2
    ON table_name1.column_name=table_name2.column_name

در دستور INNER JOIN در اسکیوال بایستی حداقل یک رابطه در هر دو جدول وجود داشته باشد که بعد از کلمه کلیدی On می آید.

نکته مهم : مهمترین دستور ها در آموزش sql ، دستور inner join می باشد که یادگیری کامل دستور join میتواند تفاوت اصلی آموزش حرفه ای اسکیوال باشد.

مثال : اگر رکوردی (خروجی) که در جدول “Persons” وجود دارد هیچ تطابقی با خروجی های جدول “Orders” نداشته باشد ، این رکوردها در خروجی این دستور sql نمایش داده نمیشوند. ادامه مطلب…







آموزش گام به گام SQL – گام چهارم

دستور TOP در sql

دستور TOP در دستور select اسکیوال ، تعداد رکورهای خروجی را مشخص میکند.

دستور top در sql برای جداولی که بالای هزاران رکورد دارند بسیار مفید میباشد. خروجی با تعداد رکوردهای بالا بر روی کارایی برنامه ی مرتبط با sql ممکن است تاثیر بگذارد.

مثال : با مثال زیر ما ۲ رکورد از جدول را انتخاب می کنیم :

    SELECT TOP 2 * FROM Persons

مثال : با مثال زیر ما میتوانیم ۵۰ درصد از رکوردها در جدول بالا را انتخاب کنیم :

    SELECT TOP 50 PERCENT * FROM Persons

عملگر Like در SQL

عملگر Like در شرطهای sql ، برای الگوی خاص جستجو مورد استفاده قرار میگیرد. ساختار دستور like در اسکیوال به صورت زیر است:

    SELECT column_name(s)
    FROM table_name
    WHERE column_name LIKE pattern

مثال : دستور زیر افرادی که شهر آنها با حرف s شروع میشوند را انتخاب میکند. ادامه مطلب…







آموزش گام به گام SQL – گام سوم

دستور SELECT در sqlدستور SELECT در اسکیوال برای انتخاب و استخراج اطلاعات مورد نظر از یک یا چند جدول و سپس مشاهده نتایج در یک جدول موقت استفاده می شود  :
SELECT column_name(s)
FROM table_name

SELECT در اینجا به مفهوم فعل است و مشخص میکند که میخواهیم اطلاعاتی را بخوانیم .

  • SELECT فهرست ستونها مشخص میکند که قصد خواندن کدام ستونها را از بانک داریم در صورتی که در این فهرست * قرار دهیم کلیه ستونهای جدول نمایش داده میشود .
  • با استفاده از کلمه FROM مشخص میکنیم که از کدام جدول یا جداول این ستونها باید انتخاب شوند .

دستور SELECT * 

دستور SELECT *  همه اطلاعات موجود در جدول را انتخاب میکند.برای انتخاب کلیه ستون های جدول  در قسمت نام ستون باید علامت * را گذاشت استفاده کرد .

SELECT * FROM table_name

نکته مهم :  برخی از برنامه نویسان بجای نوشتن تمام ستونهایی که در تهیه گزارش به آنها احتیاج دارند از * استفاده میکنند که این کار باعث بالا رفتن بار شبکه شده و کارایی سیستم را پایین می آورد لذا بهتر است بجای استفاده از * کمی بخود زحمت دهید و لیست تمامی ستونها را بطور کامل قید کنید .

ادامه مطلب…







آموزش گام به گام SQL – گام دوم

SQL چیست ؟ (اس کیو ال چیست)

در مدل رابطه‌ای داده‌ها، زبان ساختارمند پرسش‌ها یا اس کیو ال یا سی کوال (Structured Query Language – SQL) زبانی است سطح بالا مبتنی بر زبان سطح پایین و ریاضی جبر رابطه‌ای که برای ایجاد، تغییر، و بازیابی داده‌ها و نیز عملیات بر روی آنها به‌کار می‌رود.

زبان SQL به سمت مدل شی‌گرا – رابطه‌ای نیز پیشرفت کرده است.

سی‌کوال استاندارد (ANSI (American National Standards Institute را در سال ۱۹۸۶ و ISO (International Organization for Standardization) را در سال ۱۹۸۷ اتخاذ نمود. استانداردهای مختلفی از اس‌کیوال تاکنون عرضه شده که در جدول زیر بیان می‌کنیم:

  • اس‌کیوال-۸۷
  • اس‌کیوال-۸۹
  • اس‌کیوال-۹۲
  • اس‌کیوال:۱۹۹۹
  • اس‌کیوال:۲۰۰۳
  • اس‌کیوال:۲۰۰۵
  • اس‌کیوال:۲۰۰۸
  • اس‌کیوال:٢٠١١

بسیاری از اصطلاحات زبان اس‌کیوال تحت استاندارد بین‌المللی بوده، و در نتیجه، از آنها شبیه بقیه زبانهای استاندارد مثل محصولات شرکت اوراکل PL/SQL [۲] یا Sybase و SQL PL (مدل رویه‌ای) از شرکت آی‌بی‌ام می‌باشد.

ادامه مطلب…







آموزش گام به گام SQL – گام اول

Database یا دیتابیس یا پایگاه داده یا بانک اطلاعاتی چیست ؟ دیتابیس یا پایگاه داده چیست ؟ بانک اطلاعاتی یا پایگاه داده یا دیتابیس (data base) به مجموعه ای از اطلاعات با ساختار منظم  گفته می شود. این پایگاه های اطلاعاتی معمولاً در قالبی که برای دستگاه ها و رایانه ها قابل خواندن و قابل دسترسی باشند ذخیره می شوند.

پایگاه داده اس کیو ال چیست ؟ با گسترش طراحی وب سایت های پویا در شبکه جهانی وب نیاز به یک پایگاه داده و بانک اطلاعاتی (database) بزرگ برای مدیریت محتوا  احساس میشد. مدیریت پایگاه داده ها یک فرایند پیچیده است ، که به طور قابل توجهی با برنامه و زبان برنامه نویسی SQL این نیاز برطرف شده است.

پایگاه داده در اصل مجموعه ای سازمان یافته از اطلاعات است. این واژه از دانش رایانه سرچشمه می گیرد ،اما کاربر وسیع و عمومی نیز دارد، این وسعت به اندازه ای است که مرکز اروپایی پایگاه داده (که تعاریف خردمندانه ای برای پایگاه داده ایجاد می کند) شامل تعاریف غیر الکترونیکی برای پایگاه داده می باشد. در این نوشتار به کاربرد های تکنیکی برای این اصطلاح محدود می شود.

یک تعریف ممکن این است که: پایگاه داده مجموعه ای از رکورد های ذخیره شده در رایانه با یک روش سیستماتیک (اصولی) مثل یک برنامه رایانه ای است که می تواند به سوالات کاربر پاسخ دهد. برای ذخیره و بازیابی بهتر، هر رکورد معمولا به صورت مجموعه ای از اجزای داده ای یا رویداد ها سازماندهی می گردد.

ادامه مطلب…