رفتن به مطلب

ارسال های توصیه شده

درود

 

در این تاپیک قصد دارم در مورد MySQL و رابطه اونو با PHP آموزش بدم / برای اینکه روند پیوسته مطالب بهم نخوره دوستان اگر سوالی مطلبی دارن در تاپیک جداگانه مطرح کنن :icon_gol:

لینک به دیدگاه

4zzledsj5xr5eh4bu00g.jpg

 

خوب قبل از شروع هرچیز میخوایم بدونیم که اصلا دیتابیس یا پایگاه داده چیه؟

 

دیتابیس رو یک قفسه کتاب در نظر بگیرید که کتاب ها به صورت منظم و دینامیک در اون قرار گرفته / دسترسی به داده ها، درج، ویرایش و حذف داده ها به سرعت انجام میشه / به فرض مثلا شما در انجمن نواندیشان که عضو میشید و نام کاربری و غیره رو وارد میکنید این اطلاعات شما در داخل پایگاه داده ذخیره میشه و یک رکورد (سطر) رو تشکیل میده و حالا هر موقع که نیاز بود اطلاعات شما رو واکشی میکنه و به شما یا بقیه نشون داده میشه.

 

در حال حاضر اکثر برنامه های تحت وب و تحت ویندوز از پایگاه داده استفاده می کنن. یعنی اینقدر استفاده از پایگاه داده ضروری و کاربردی هست که ساخت برنامه ها بدون پایگاه داده غیر قابل تصور شده.

 

دیتابیس ها مثل هرچیزی تو دنیای واقعی براساس کارکرد و سرعت و ... انواع مختلفی دارن / از جمله مهمترین دیتابیس ها MySQL هست که تقریبا اکثر برنامه های که با PHP نوشته شده اند از این دیتابیس استفاده میکنن که در پست های بعدی میخوایم روی MySQL و رابطش با PHP‌ فوکوس داشته باشیم

 

به نظر من پایگاه داده یکی از مباحث شیرین هست که تفاوت چندانی با ذخیره سازی داده ها در دنیای واقعی نداره + اینکه به سرعت میشه مباحث مقدماتی پایگاه داده رو یاد گرفت.

 

ویرایش:

جهت کسب اطلاعات بیشتر تاپیک زیر رو مشاهده کنید:

http://www.noandishaan.com/forums/thread107263.html

 

ادامه دارد...

لینک به دیدگاه

yr4365ajfn1vctf8hujk.gif

 

حالا MySQL چیه؟

 

یه ادمی در سال 1979 اومد یه شرکتی به نام MySQL AB تاسیس کرد و شروع کردن به طراحی MySQL‌ یه سرور SQL که نسبتا سریع و امن و سبک باشه و بعلاوه اینکه متن باز باشه یعنی هرکی دلش خواست بره کد این سرور رو ببینه / حالا این MySQL مزیتی که داره روی اکثر سیستم عامل ها جواب میده مثل لینوکس و ویندوز و مک و ...

 

از بزرگترین وب سایتهای که از MySQL برای ذخیره داده هاشون استفاده میشه سایتهای مثل Youtube , Facebook, Google, Nokia, Wikipedia, Flicker , ... با اون دیتابیس حجم داده ای بزرگشون از MySQL استفاده میکند.

 

یکی دیگه از مزیتهای که داره دسترسی ساده زبانهای برنامه نویسی مثل PHP به این نوع دیتابیس ها هست.

 

حالا واسه خودتون شاید فک کردین چجوری MySQL روی سیستمم داشته باشم؟

 

 

 

  • چون رایگان هست (برای استفاده های شخصی) به راحتی میتونید از
    برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
    دانلودش کنید (بعدا باید با PHP , Apache کانفیگ بشه)
  • اما روشی که من پیشنهاد میکنم با دانلود نرم افزار
    برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
    بسته های PHP , MySQL و سرور Apache باهم دانلود و کانفیگ میشه و دردسر زیادی نداره

ادامه دارد ...

لینک به دیدگاه

قبل از شروع امیدوارم xampp‌ رو بدون دردسر نصب و سرویس های Apache‌ و MySQL رو اجرا کرده باشین / در صورتی که مشکلی بود مطرح کنید که یه پست جداگانه در مورد این مبحث توضیح بدم ...

 

از اینجا به بعد ما در مورد توابع PHP که ارتباط تنگاتنگ با MySQL دارن صحبت میکنیم.

 

قبل از هرکاری وقتی میخوایم به هر نحوی به داده ها در دیتابیسمون دسترسی داشته باشیم باید قبل از اون یه سلام علیک با دیتابیس داشته باشیم ... یعنی به دیتابیس وصل بشیم

 

توجه کنید ما داریم از کد php به دیتابیس وصل میشیم و هیچ interface یا رابط کاربری و بصری رو نداریم.

 

وظیفه اتصال به دیتابیس در php‌ برعهده تابعی به نام mysql_connect() هست.

پارامترهای پایه این تابع به این صورته:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

که host name نام میزبان رو مشخص میکنه معمولا این پارامتر localhost ارسال میشه / user name و password‌ همان کاربر و کلمه عبوری که قراره به دیتابیس وصل بشه

 

معمولا تو سرورهای مجازی که ما توسط xampp اجرا میکنیم به صورت پیشفرض نام کاربری root و بدون کلمه عبور هست

 

 

مثال: یه فایل PHP‌ ایجاد کنید (من اسم فایلم رو connect.php گذاشتم)

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

خط اول تابع mysql_connect با پارامترهای اجباریش ارسال میشه / در صورتی که با این مقادیر به درستی انتخاب شده باشند متغییر continued حاوی شناسه پیوند به پایگاه داده خواهد بود و در صورتی که اتصال برقرار نشد حاوی مقدار false خواهد بود.

 

یه نکته دیگه که باید بگم این توابعی که تو این تاپیک قراره بگم کم کم دارن منسوخ میشن / بعد از اتمام این تاپیک شیوه نو و جدیدی رو برای اتصال به پایگاه داده اموزش میدم / ولی مقدمات و منطق و پایه ش همین توابع هست.

 

ادامه دارد ...

لینک به دیدگاه

درود

 

تو پست قبلی درباره نحوه اتصال به سرور MySQL و تابع و روش انجام اون صحبت کردیم .

 

خوب حالا قدم بعدی چیه؟ خب ما تا اینجا به اتاق کتابخانه دسترسی پیدا کردیم حالا باید کتابخانه رو بسازیم بعد بیایم پارتیشن بندی کنیم و بعد کتابها رو بچینیم .

 

خوب حالا چطور پایگاه داده مون رو بسازیم؟ PHP‌ یک تابعی داره که فقط به درد ساخت پایگاه داده میخوره .

 

تابع mysql_create_db از PHP وظیفه ساخت پایگاه داده رو بر عهده داره

 

نحوه نوشتار این تابع به این صورته:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

این تابع یک پارامتر ورودی داره و اون نام دیتابیسی هست که میخوایم بسازیم.

 

مثال: یک فایل PHP جدید ایجاد کنید (من اسمشو گذاشتم create.php)


//the example of making MySQL database
//create.php
$continued = mysql_connect("localhost","root","");
if($continued){
echo("Connection is succeed");
}else{
echo("Connection is fail");
}
$make = mysql_create_db("data_root");
if($make){
echo("<br><br>Database data_root succeeds in making");
}else{
echo("<br><br>Database data_root fails in making");
}
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

 

میاد یه پایگاه داده به اسم data_root میسازه . اگه این پایگاه داده به درستی ساخته شد متغییر make مقدار true میگیره شرط اولی برقرار میشه . در غیر اینصورت مقدار false‌ برمیگردونه و پیغام خطا به کاربر نشون میده.

 

ادامه دارد ...

لینک به دیدگاه

درود

 

تو قسمتهای قبل مثالی از کتابخانه رو برای درک بهتر مفهوم دیتابیس و ... آوردم خوب اجازه بدین این مثال رو برای این پست کامل کنم.

 

ما با تابع mysql_create_db که تو پست قبل توضیح دادم اومدیم کتابخانه رو درست کردیم / حالا نیاز داریم به پارتیشن بندی این کتابخانه / وقتی حرف از پارتیشن در پایگاه داده میشه اولین چیزی که به ذهنمون باید برسه جدول (Table) هست.

 

چون این مبحث اهمیت زیادی داره یه گریز بزنم به تاپیک دیگمون که درباره جدول و فیلد و ... صحبت شده:

 

 

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

و به طور کلی:

 

 

  • مجموعه ای از جدوال پایگاه داده را تشکیل می دهند

  • مجموعه ای از رکوردها جدول را تشکیل می دهند

  • تمام رکوردها در یک جدول فیلد برابری دارند

حالا میخوام شما رو با یه مفهوم دیگه به نام query (کوئری / پرس و جو) در پایگاه داده آشنا کنم.

 

فرض کنید ما یه جدول آماده از اطلاعات دانشجوها داریم / حالا میخوایم یه دانشجو با شماره دانشجویی خاص رو پیدا کنیم / برای اینکار ما باید از جدولمون کوئری بگیریم / یعنی ازش با یک query‌ بخوایم که اقای جدول فلان دانشجو رو به ما نشون بده / تمامی کارهای که ما با پایگاه داده انجام میدیم میشه از طریق کوئری انجام داد (مثل ساخت جدول / مثل درج رکورد / مثل واکشی یا انتخاب یه رکورد خاص و ...)

 

برای اینکه query ها در تمام سرورهای پایگاه داده قابل استفاده باشه (مثل MySQL , MS SQL Server , ...) اومدن از دستورات واحد برای کوئری ها استفاده کردن به این دستورات SQL یا Structured Query Language میگن.

 

حالا چند نوع دستور SQL داریم .

 

یه سری دستور که معروف به DDL هستن برای تعریف اطلاعات SQL استفاده میشه. مثلا ساخت Create Table / ویرایش Alter Table / حذف Drop Table جدول و ...

 

و یه سری دیگه دستورات که بهشون DML میگن برای دستکاری اطلاعات کاربرد دارن. مثل دستورات استخراج داده ها از یک جدول Select / ویرایش یک فیلد Update / حذف یک رکورد Delete / افزودن یک رکورد

Insert

 

این دستورات هرکدوم قواعد خاص خودشونو دارن + چندتا تعریف دیگه مثل کلید key, اندیس index و اینا مونده که تو قسمت های که باهاش کار داریم توضیح خواهم داد.

ادامه دارد...

لینک به دیدگاه

درود.

 

 

در این پست میخوایم با اولین دستور SQL ی (ساخت جدول) و با تابع mysql_query در php آشنا بشیم.

 

 

همینطور که تو پست قبل توضیح دادم دستور ساخت جدول Create Table از نوع دستورات DDL هست و به معنی زبان تعریف داده هست.

 

 

با این دستور امکان ساخت جدول فراهم میشه / سه نکته که باید هنگام استفاده از این دستور رعایت بشه

 

 

1- نامی که برای جدول استفاده میکنیم منحصر بفرد باشه (در پایگاه داده موجود)

2-نام فیلدها نباید در یک جدول تکراری باشه

3- نوع داده هر فیلد باید مشخص باشه.

 

 

حالا نوع داده هر فیلد چیه؟

 

 

ببینید ما وقتی یک فیلد رو میسازیم باید بگیم مقداری که قراره داخل این فیلد از هر رکورد قرار میگیره از چه نوعی هست؟‌

 

 

من چند نمونه از انواع داده که بیشتر باهاش سروکار داریم رو اینجا قرار میدم.

 

 

داده های عددی ( یعنی مقدار فیلدها عدد هستند)

 

 

TINYINT

 

 

  • حداکثر طول 1 بایت
  • مثال حقیقی : از -128 تا 127

INT

 

  • حداکثر طول 4 بایت
  • مثال حقیقی : از -2147483648 تا 2147483647

FLOAT

 

  • حداکثر طول 4 بایت
  • مانند نوع INT با این تفاوت که می تواند اعشاری باشد

 

 

 

 

داده های رشته ایی (یعنی مقدار هر فیلد یک رشته از کاراکترها هست / اعداد هم در این فیلدها میتونن قرار بگیرن ولی محاسبات ریاضی نمیشه انجام داد)

 

 

CHAR

 

  • تا حداکثر 255 کارکتر
  • مناسب برای رشته های زیر 4 کاراکتر

VARCHAR

 

  • طول متغییر و قابل تغییر تا حداکثر 65,535 بایت
  • منظور از طول متغییر یعنی اینکه اگر فرض رشته ما ali باشه به اندازه 3 کاراکتر فضا برای در نظر میگیره یا اگر mohammadreza‌ باشه 12 کاراکتر
  • برای داده های نوع varchar هنگام تعریف باید حداکثر اندازه رو وارد کنیم حتما!

TEXT

 

 

  • از 2 تا حداکثر 2 به توان 16 بایت که می شود 65,535 بایت
  • برای متنهای بلند از این نوع داده استفاد میکنیم

 

 

مثلا اگه ما فیلدی برای نام خانوادگی داریم باید نوع داده رو varchar‌ در نظر بگیریم یا مثلا اگه فیلدی به عنوان حساب بانکی داریم باید float یا int قرار بدیم.

ولی مثلا برای شماره موبایل بهتره varchar‌ در نظر بگیریم چون نمیخوایم محاسبات عددی روش انجام بدیم الکی فضا به این int‌ نمیدیم.:D

 

 

خوب حالا بریم سراغ نحوه نوشتار دستور create table:

 

 

 


CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....

)
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

 

کد بالای میاد یه جدول به نام persons‌ با فیلدهای Id از نوع int (تقریبا ما در تمام جدولامون فیلدی به نام id با نوع داده int میذاریم حالا چرا بعدا توضیح میدم) یه فیلد برای نام خانوادگی LastName و ی فیلد برای FirstName و یه فیلد address از نوع varchar 255 تایی و یه موبایل Mobile که varchar 11 تایی در نظر گرفته (چرا 11 تا؟ چون موبایل حداکثر 11 رقم داره دیگه:D)

 

 

خوب تا همینجا کار مارو راه میندازه / اگه بیشتر میخواین درباره دستور create table بدونین این پست رو مطالعه کنید.

 

 

 

 

 

حالا تابع mysql_query چیه؟ PHP اومده یه تابع کلی در نظر گرفته که ما با اون میتونیم تموم query ها رو که تابع خاصی ندارند (مثل ساخت جدول) از طریق اون اجرا کنیم.

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

 

این تابع دو پارامتر ورودی داره / پارامتر اول query یا اون دستوری که میخوایم اجرا بشه (مثل دستور ساخت جدول) / پارامتر دوم dblink اون شناسه پایگاه دادمون هست که وقتی با دستور mysql_connect اجرا میکردیم در صورتی که اتصال با mysql به درستی برقرار میشد یه لینک به ما برمیگردون . این همونه

 

 

این تابع در برابر دستورات مختلف مثل select , update , insert , create table اینا مقادیر مختلفی برمیگردونه

 

 

اینجا چون هدفمون ساخت جدول و create table هست اگه جدول مورد نظرمون به درستی ایجاد شد مقدار true و اگه ایجاد جدولمون به هر نحوی با خطا همراه بود با مقدار false‌ با ما بای بای میکنه

 

 

حالا بریم سراغ مثالمون / يک فایل php ایجاد کنید (من اسمشو create_table.php گذاشتم)


//the example of making MySQL database table
//create_table.php
$continued = mysql_connect("localhost","root","admin");
if($continued){
echo("Connection is succeed");
}else{
echo("Connection is fail");
}
$make = mysql_create_db("my_db");
if($make){
echo("<br><br>my_db database succeeds in making");
}else{
echo("<br><br>my_db database fails in making");
}
$order1 = "CREATE TABLE Persons
(
Id int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),

Mobile varchar(11)

)";
$make_table = mysql_db_query("persons",$order1);
if($make_table){
echo("<br><br>Table persons succeeds in making");
}else{
echo("<br><br>Table persons fails in making");
}

 

تحلیل کد :

 

 

خوب ابتدا با تابع mysql_connect میاد با سرور MySQL وصل میشه / چیزی که اینجا اهمیت داره در صورت اتصال موفق داخل متغییر continued حاوی لینک اتصال به سرور هست

 

 

در خطوط بعد با دستور mysql_create_db یک پایگاه داده به نام my_db میسازه و در صورتی که به درستی ساخته پیغام مناسب رو چاپ میکنه

 

 

حالا در متغییری به نام order1 یک رشته که حاوی یک دستور sql هست قرار داده / این دستور جدولی به نام persons با 5 تا فیلد id و LastName و FirstName و Address و Mobile خواهد ساخت (هنوز نساخته!)

 

 

با دستور mysql_query متغییر order1 و اون لینک اتصال به سرور که داخل متغییر continued قرار داره رو پاس میده / بعد از اجرای این دستور جدول ساخته میشه

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

 

 

خوب تا همینجا بسه برای فعلا / در پست بعد با نحوه درج رکورد و چندتا تابع دیگه php‌ اشنا میشیم.

 

 

ادامه دارد ...

لینک به دیدگاه

درود.

 

 

تا اینجا با نحوه اتصال به MySQL / نحوه ساخت پایگاه داده / و نحوه ساخت جدول آشنا شدیم.

 

 

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

 

 

در بین توابع PHP به صورت مستقیم نمیتونیم رکورد جدید درج کنیم پس بهترین کار اینه که با دستورات SQL و تابع mysql_query پیادش کنیم.

 

 

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

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

 

واژه های INSERT INTO و VALUES یک عبارت کلیدی هست و حتما باید به ترتیب ذکر بشه

table_name نام اون جدولی هست که قصد داریم رکورد جدید رو بهش اضافه کنیم

داخل پرانتز روی به روی نام جدول به ترتیب نام فیلد (مثل column1) و پرانتز بعد از values مقدار اون فیلد (value1) قرار میدهیم.

 

 

توجه کنید مقادیری که نوع دادشون رشته ای هستند حتما باید بین "" یا '' قرار بگیرند.

 

 

اگر نام فیلد ها ذکر نشه مانند دستور زیر مقادیر به ترتیب از اولین فیلد تا اخرین فیلد قرار میگیرند.

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

توضیحات بیشتر راجع به این دستور در این پست قرار دارد.

 

 

خوب حالا بریم سراغ مثالمون / یک فایل جدید ایجاد کنید (من اسمشو data_insert.php گذاشتم)

 

 

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

 

در مثال بالا یه تابعی رو مشاهده میکنید که تا الان نداشتیم و mysql_select_db هست. / این تابع وظیفش مشخص کردن اون پایگاه داده ای هست که ما قصد داریم عملیات خاصی مثل درج یا ویرایش یا حذف روش انجام بدیم. این تابع یک پارامتر ورودی داره و اون اسم پایگاه داده هست. ما در اینجا اسم پایگاه داده خودمون که my_db هست رو قرار میدیم ( این پایگاه داده رو تو پست های قبل ساختیم پس دیگه نیازی نیس بسازیمش / اگه شما اینکارو نکردین با تابع mysql_create_db اینکارو انجام بدین)

 

 

متعییر order حاوی یک دستور SQL هست که قراره در خطوط بعد به تابع mysql_query پاس بدیم. این دستور در صورت اجرا با این تابع یک رکورد به جدول Persons اضافه میکنه اگر این دستور با موفقیت اجرا شد متغییر result حاوی مقدار true میشه.

 

 

خوب اینم از دستور insert into و تابع mysql_select_db / بازم با این تاپیک باشین.

 

 

ادامه دارد ...

لینک به دیدگاه
  • 7 سال بعد...
  • 1 سال بعد...

سلام خوبید شما

روزتون بخیر

ممنون بابت آموزش هاتون

میخواستم بدونم آیا امکانش هست با php و mysql برای wordpress حرکتی مثل .net framwork زد؟

یعنی مثل ساختار MVC، یه سری کلاس تو قسمت مدل بزاریم و بعد بگیم بر اساس همینا بورو تیبل ها و غیره و بساز و اگه وجود داشت migration رو استارت کن و  دیتا های جدید رو اضافه کن بهش

 

ارادتمند سایار

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...