وب سايت رسمي محمد عبداللهي

برناه نويس ، طراح وب و مدرس حرفه اي

برای تهیه و دریافت فیلم های آموزشی تحت وب می توانید با من تماس بگیرید . این فیلم ها در یک یا چند DVD تهیه شده و برای شما با پست پیشتاز ارسال می گردد . قیمت فیلم ها بر اساس تعداد و نوع مباحث درخواستی شما تعیین می گردد . ضمنا چنانچه در مبحث خاصی مشکل دارید و یا به نمونه مثالی نیاز دارید میتوانیم این فیلم را مختص شما تهیه کنیم . فیلم ها ی تهیه شده با فیلم های کلاس های بنده فرق دارد و خاص مخاطبان راه دور و مجازیست شماره تماس من : 09132293904 .
تخفیف ویژه فیلم های آموزشی به مناسبت نوروز تا 15 فرودین 93 . هم اکنون اقدام به مطالعه شرایط کنید .
ارائه پنل sms دارای فول امکانات سالیانه فقط 100 هزار تومان . تماس بگیرید :09132293904
برگزاری کلاس های جامع طراحی وب در تهران با همکاری گروه آموزشی ویستا . آخرین مهلت ثبت نام 24 بهمن 92 برای کسب اطلاعات بیشتر مطلب دوره جامع طراحی وب در تهران را مطالعه کنید و سپس با من تماس بگیرید .
 

آموزش PHP

آموزش dot NET

 

Ajax

 

 

jQuery

 

MS SQL Server

آموزش PHP آموزش PHP - ارتباط با دیتابیس MySQL در PHP

آموزش PHP - ارتباط با دیتابیس MySQL در PHP

فرستادن به ایمیل چاپ مشاهده در قالب PDF
آموزش PHP بدون مباحث مربوط به ارتباط بین mysql و php قطعا ناقص خواهد بود .
در آموزش این مبحث ، دو شاخه مدنظر است . یکی آموزش مفاهیم دیتابیس و پایگاه داده (Database) هاست که این بخش در آموزش پایگاه داده ها به صورت کامل در بخش آموزش پایگاه داده ها مطرح خواهد شد و شاخه دیگر ارتباط بین mysql و php و اجرای دستورات mysql از طریق PHP است که در این مقاله به آموزش آن می پردازیم . در پایگاه داده ها چهار عمل اصلی درج (insert) ، حذف (delete) ، بروزرسانی (update) و انتخاب (select) وجود دارد که همانطور که گفتم برای آشنایی با چند و چون این دستورات باید به بخش آموزش پایگاه داده ها رجوع کنید . هدف ما در این مقاله آشنایی با نحوه اجرای این چهار عمل اصلی mysql در PHP است و فرض شده که مخاطبان سایت با مفاهیم پایگاه داده و دستورات دیتابیس مشکلی نداشته و به آن مسلط هستند.
مراحل اجرای دستورات mysql در PHP
مرحله اول : قبل از اجرای دستورات mysql در php باید ابتدا ارتباط (connection) با دیتابیس (Database) باز (برقرار) کنید . برای این کار روش های متعددی  وجود دارد ولی من  در این مقاله ساده ترین آنها را بررسی می کنم . شایان ذکر است که همه این روش ها از نظر قدرت و امکانات همانند هم هستند . ما در این بخش برای ایجاد ارتباط با دیتابیس (Database) از کلاس mysqli استفاده می کنیم . برای استفاده از این کلاس باید ابتدا یک شیء (Object) از این کلاس بسازیم . این کار با فراخوانی سازنده (Constructor) این کلاس انجام می شود . این سازنده یک تابع (به تابعی که عضو کلاس است متد گفته می شود) همنام خود کلاس است که 4 پارامتر را دریافت می کند :
پارامتر اول متد mysqli : نام سرور mysql ی است که دیتابیس شما روی آن قرار دارد و شما میخواهید به آن متصل شوید . معمولا این نام برابر localhost (سروری که برنامه PHP روی آن در حال اجراست) می باشد .
پارامتر دوم متد mysqli : نام کاربری است که در سطح سرور دیتابیس تعریف شده و شما میخواهید از این حساب کاربری برای اتصال به دیتابیس استفاده کنید . مستحضرید که هنگام اتصال به دیتابیس (Database) باید از یک حساب کاربری استفاده شود .
پارامتر سوم متد mysqli : کلمه عبور مرتبط با پارامتر دوم همین متد است . هر نام کاربری در سطح سرور mysql دارای یک رمز یا کلمه عبور است .
پارامتر چهارم متد mysqli : نام دیتابیس مورد نظر شما از بین همه دیتابیس (Database) های موجود در سرور است . با این پارامتر شما به PHP می گویید دستورات بعدی را که به آن میدهید در سطح کدام دیتابیس اجرا شود .
خروجی متد mysqli یک connection به دیتابیس مورد نظر است که میتوانید از این پس بوسیله آن دستوراتی را به mysql ارسال کنید .
مرحله دوم اجرای دستورات mysql از طریق PHP اینست که Query خود را بنویسید و بهتر است آنرا در یک متغیر بگذارید .
مرحله سوم اجرای دستورات mysql با PHP اینست که Query فوق را از طریق connectionی که در مرحله اول ایجاد کرده اید اجرا کنید . این کار توسط متد query از کلاس mysqli انجام می شود . اینجا تفاوتی بین اجرای دستورات insert ، delete و update با اجرای دستور select وجود دارد . این تفاوت اینست که سه مورد اول دارای خروجی نیستند یعنی هیچ داده ای از جداول (Tables) دیتابیس (Database) برنمی گردانند . در صورتی که select دارای خروجی است .بنابراین این دو مورد را جداگانه بررسی می کنیم :
نحوه اجرای دستورات insert ، delete و update در PHP
در این مثال فقط اجرای دستور insert را بررسی می کنیم دو مورد دیگر هم 99 درصد مشابهت دارند .
فرض کنید دیتابیسی داریم با نام school . در این دیتابیس (Database) جدولی (table) با نام students قرار دارد . میخواهیم با استفاده از PHP فرمی طراحی کنیم که نام و نام خانوادگی و کد ملی را از کاربر (مثلا اپراتور مدرسه) بگیرد و این اطلاعات را در جدول درج کند . (این مثال را بسیار ساده در نظر گرفته ایم که گیرایی آن حفظ شود) . ابتدا این فرم را ببینیم . نام این صفحه را می گذاریم form.php :
<html>
<head>
</head>
<body>
<form method="post" action="register.php" >
First Name : <input type="text" name="txtFName" />
Last Name : <input type="text" name="txtLName" />
SSN : <input type="text" name="txtSSN" />
<input type="submit" name="btnRegister" value="Register" />
</form>
</body>
</html>
اگر در مورد کار با فرم ها و یا input ها مشکلی دارید میتوانید مقاله فرم ها در PHP از همین وب سایت را مطالعه کنید .
حال به سراغ صفحه register.php (به مقدار action از تگ فرم توجه کنید) که قرار است اطلاعات را از این فرم بگیرد و عملیات ارتباط با دیتابیس و ثبت نام را انجام دهد می رویم .
<html>
<head>
</head>
<body>
<?php
//در هر دیتابیس یک نام کاربری با نام root وجود دارد که full control است و به صورت پیش فرض پسورد ندارد شما در عمل نباید اینگونه استفاده کنید بلکه باید یک یوزر در سطح سرور بسازید و از آن استفاده کنید .
$conn = new mysqli('localhost' , 'root' , '' , 'school');
// در این سطر با استفاده از داده های وارد شده توسط کاربر در فرم فوق query را می سازیم
$query = "insert into students(FName , LName , SSN)  values('".$_POST['txtFName']."' , '".$_POST['txtLName']."' , '".$_POST['txtSSN']."')";
// در php هر گاه بخواهیم متد یا یک attribute از یک کلاس یا شیء را فراخوانی کنیم باید از علامت  <- استفاده کنیم . درحالیکه سمت چپ این علامت نام شیء و سمت راست این علامت نام آن متد یا attribute بیاید
$conn->query($query);
//برای اجرای دستورات insert و delete و update کار در همینجا تمام می شود و دستور شما در دیتابیس اجرا شده است . اما اگر بخواهید گزارشی نیز به کاربر بدهید از انجام عملیات می توانید یک خصوصیت (attribute) از کلاس  mysqli بنام affected_rows را بررسی کنید . این خصوصیت تعداد سطرهای تحت تأثیر سه عمل insert و delete و update را برمیگرداند . اگر این مقدار 0 بود نشاندهنده اینست که query شما با موفقیت اجرا نشده است (در مورد insert) . و یا هیچ سطری  مطابق با شرط where در دستورات delete و update پیدا نشده است .
if($conn->affected_rows>0)
echo "<br /> The Registeration was successful ! <br />";
else
echo "<br /> The Error Occured ! The Registeration was Canceled <br />";
?>
</body>
</html>
نحوه اجرای دستور select در PHP
همانطور که قبلا هم گفتیم علت جدا کردن دستور select از سایر دستورات اینست که سایر دستورات بعد از اجرا کارشان خاتمه می یابد اما در هنگام کار با دستور select پس از اجرای دستور کار ما به عنوان برنامه نویس PHP تازه شروع می شود . چرا که باید نتایج حاصله از دستور select را به برنامه بازگرداند و سپس آنرا به کاربر نشان داد . مثال زیر کد صفحه ای را نشان  می دهد که در آن اطلاعات موجود در جدول students ، که در مثال فوق در آن رکورد هایی درج کردیم ، واکشی شده و در معرض دید کاربر قرار می دهد .
<html>
<head>
</head>
<body>
<?php
$conn = new mysqli('localhost' , 'root' , '' , 'school');
$query = "select * from students";
//در این قسمت باید پس از اجرای دستور select سطرهای انتخاب شده توسط آنرا به برنامه بازگرداند برای همین هم خروجی دستور query در یک متغیر ریخته می شود . نام این متغیر را table نهادیم که این نکته را متذکر شده باشیم که خروجی این دستور یک table است ولو دارای یک مقدار باشد که آنهم می شود یک جدول با یک سطر و یک ستون
$table = $conn->query($query);
//حال تمامی سطرهای انتخابی توسط دستور select داخل متغیر table است . برای ادامه کار باید ببینیم آیا توسط دستور select سطری انتخاب شده است یا خیر . چرا که میخواهیم این سطر را بخوانیم و اگر دستور خواندن را روی جدول خالی اجرا کنیم با خطای مهلک مواجه می شویم . بررسی تعداد سطرها توسط یک خصوصیت از کلاس table بنام num_rows انجام می شود
if($table>num_rows>0)
//پس از آنکه مطمئن شدیم سطری برای خواندن وجود دارد می توانیم با متد fetch_assoc از کلاس table هر سطر از جدول خروجی دستور select را جداگانه به صورت یک آرایه انجمنی بخوانیم و نام این آرایه را در خط زیر row گذاشته ایم . معنی این مطلب اینست که می توانیم به فیلد های جدول با نام آنها دسترسی پیدا کنیم . این کار را معمولا در یک حلقه while انجام می دهیم . حلقه تا زمانی که سطری در جدول وجود دارد آنرا واکشی کرده و از جدول حذف می کند (نه از جدول اصلی بلکه از متغیر table) و نام آنرا row می گذارد بنابراین در بار بعدی که حلقه اجرا می شود سطر بعدی واکشی می شود . می توانید این عمل را مانند pop کردن از یک stack فرض کنید. سپس در حلقه while این اطلاعات را با هر فرمت دلخواهی که بخواهیم چاپ می کنیم . مثلا من در این مثال می خواهم هر فیلد از جدول در یک شطر جداگانه بیاید و پس از هر رکورد یک خط افقی درج شود .
while($row = $table->fetch_assoc())
{
echo "<br />";
echo "First Name : ".$row['FName']."<br />";
echo "Last Name : ".$row['LName']."<br />";
echo "SSN : ".$row['SSN']."<br />";
echo "<hr />";
}
؟>
</body>
</html>
برای آشنایی با مثال های عملی کار با دیتابیس در PHP و کار بیشتر و مفیدتر در این زمینه می توانید در کلاس های جامع طراحی وب (PHP ,MySQL) من شرکت کنید . زیرا در آموزش های غیر حضوری واقعا امکان روشن تر کردن موضوع و ارائه مثال های پیچیده بسیار وقت گیر و تقریبا غیر ممکن است .