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

ارتباط با پایگاه داده mysql در PHP

در PHP نسخه ۵ به بالا، برای کار با پایگاه داده MySQL می توانید یکی از روش های زیر را استفاده نمایید:

  • افزونه MySQLi (کاراکتر i مخفف improved بمعنی بهبود یافته است)
  • PDO که سرنام واژگان PHP Data Objects است

در نسخه های قبلی PHP از افزونه MySQL استفاده می شده، اما استفاده از این افزونه، از ۲۰۱۲ دیگر توصیه نمی شود.


باید از MySQLi استفاده کنم یا PDO ؟

اگر بخواهیم خیلی خلاصه جواب دهیم، این انتخاب بستگی به نیاز شما دارد

هر کدام از گزینه های MySQLi و PDO، مزییت های خودشان را دارند.

گزینه PDO با ۱۲ پایگاه داده مختلف کار می کند، اما MySQLi تنها با پایگاه داده MySQL کار خواهد کرد.

بنابراین اگر بخواهید زمانی به یک پایگاه داده دیگر سوییچ کنید، گزینه PDO کار را آسان تر خواهد کرد و فقط کافی است که ارتباط یا connection به پایگاه داده را تغییر دهید و احتمالاً چند تغییر کوچک در کوئری ها را خواهید داشت.

هر دو گزینه شیء گرا هستند، اما MySQLi رویه های API را نیز ارائه می دهد.

هر دو گزینه، دستورات آماده برای مقابله با تزریقات SQL یا SQL injection را پشتیبانی می کنند، که البته این موضوع، برای حفظ امنیت برنامه های کاربردی وب بسیار حیاتی است.


مثال های MySQL به هر دو روش MySQLi و PDO

در این مطلب و آموزش های بعدی، سه روش مختلف برای کار کردن با پایگاه داده را نشان خواهیم داد:

  • MySQLi (شیء گرا یا Object-Oriented)
  • MySQLi (رویه ای یا Procedural)
  • PDO

نصب MySQLi

برای سیستم عامل Linux و Windows، افزونه MySQLi در اغلب موارد بصورت اتوماتیک بعد از نصب پکیج php5 mysql نصب خواهد شد.

برای کسب اطلاعات بیشتر بر روی لینک کلیک کنید .


نصب PDO

برای کسب اطلاعات بیشتر بر روی لینک کلیک کنید .


ارتباط یا Connection به پایگاه داده MySQL

قبل از اینکه به داده های پایگاه داده دسترسی داشته باشید، باید یک ارتباط یا Connection تعریف کنید:

مثال

<?php
$servername = “localhost”;
$username = “username”;
$password = “password”;

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
die(“Connection failed: ” . $conn->connect_error);
}
echo “Connected successfully”;
?>

توجه داشته باشید که در مثال شیء گرای بالا، connect_error$ تا PHP 5.2.9 و ۵٫۳٫۰ PHP کار نمی کند، بنابراین اگر می خواهید که کدتان با نسخه های قدیمی PHP نیز سازگار باشد، بجای آن از کد زیر استفاده نمایید:

 // Check connection
if (mysqli_connect_error()) {
    die("Database connection failed: " . mysqli_connect_error());
}

مثال (MySQLi Procedural) در مثال زیر با استفاده از تابع ()mysqli_connect یک connection به پایگاه داده تعریف شده است:

<?php
$servername = “localhost”;
$username = “username”;
$password = “password”;

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
die(“Connection failed: ” . mysqli_connect_error());
}
echo “Connected successfully”;
?>

مثال(PDO)

<?php
$servername = “localhost”;
$username = “username”;
$password = “password”;

try {
$conn = new PDO(“mysql:host=$servername;dbname=myDB”, $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo “Connected successfully”;
}
catch(PDOException $e)
{
echo “Connection failed: ” . $e->getMessage();
}
?>

توجه داشته باشید که در مثال PDO بالا، با تنظیم گزینه dbname با مقدار “myDB” نام پایگاه داده را نیز مشخص کرده ایم. اگر PDO موفق به اتصال به پایگاه داده نشود یک استثنا یا exception پرتاب (thrown) می شود.

نکته
: یکی از بزرگترین مزیت های PDO وجود کلاس exception برای مدیریت خطاها است. همان طور که می دانید این خطاها ممکن است در کوئری های پایگاه داده رخ دهد و اگر یک استثنا یا exception از داخل بلاک { }try پرتاب (thrown) شود، اجرای اسکریبت متوقف شده و جریان کار به اولین بلاک { }catch منتقل می شود. در واقع استثنای که در قسمت try رخ داده در قسمت catch به دام می افتد.

بستن یک ارتباط

ارتباط یا Connection به صورت اتوماتیک وقتی که اسکریبت پایان یافت، بسته می شود، اما اگر مایل باشید می توانید این کار را قبل از پایان اسکریبت انجام دهید:

مثال

mysqli_close($conn);

مثال(PDO)

$conn = null;

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟