PHP – اتصال PHP به پایگاه داده (PHP Connect to MySQL)

PHP 5 و نسخه‌های بعدی می‌توانند با پایگاه داده MySQL از طریق روش‌های زیر کار کنند:

  • افزونه MySQLi (حرف “i” به معنی بهبود یافته)
  • PDO (اشیاء داده‌های PHP)

نسخه‌های قبلی PHP از افزونه MySQL استفاده می‌کردند، اما این افزونه از سال 2012 منسوخ شده است.

آیا باید از MySQLi یا PDO استفاده کنم؟ (Should I Use MySQLi or PDO?)

اگر به یک پاسخ کوتاه نیاز دارید، می‌توانید بگویید: “هر چیزی که دوست دارید”.

هر دو MySQLi و PDO مزایای خاص خود را دارند:

  • PDO در 12 سیستم پایگاه داده مختلف کار می‌کند، در حالی که MySQLi فقط با پایگاه داده‌های MySQL کار می‌کند. بنابراین، اگر مجبور به تغییر پایگاه داده پروژه خود شوید، استفاده از PDO فرآیند را ساده می‌کند. تنها کافی است رشته اتصال و چند پرس و جو را تغییر دهید. با MySQLi، نیاز به بازنویسی کل کد خواهید داشت – از جمله پرس و جوها.
  • هر دو روش شیءگرا هستند، اما MySQLi همچنین یک API رویه‌ای را نیز ارائه می‌دهد.
  • هر دو از Prepared Statements پشتیبانی می‌کنند. Prepared Statements از حملات SQL Injection محافظت می‌کند و برای امنیت برنامه‌های وب بسیار مهم است.

مثال‌های MySQL با هر دو نحوه نگارش MySQLi و PDO

در این بخش و فصل‌های بعدی، سه روش برای کار با PHP و MySQL را نشان خواهیم داد:

  • MySQLi (شیءگرا)
  • MySQLi (رویهای)
  • PDO

نصب MySQLi

رای لینوکس و ویندوز: افزونه MySQLi معمولاً به طور خودکار در بیشتر موارد نصب می‌شود، زمانی که بسته php5 mysql نصب شده باشد.

برای جزئیات نصب، به آموزش نصب و پیکربندی افزونه mysqli در PHP مراجعه کنید.

نصب PDO

برای جزئیات نصب، به آموزش نصب PDO در سیستم‌های مختلف مراجعه کنید.

باز کردن اتصال به MySQL

قبل از اینکه بتوانیم به داده‌های پایگاه داده MySQL دسترسی پیدا کنیم، باید بتوانیم به سرور متصل شویم.

مثال (MySQLi شیءگرا)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
// ایجاد اتصال
$conn = new mysqli($servername, $username, $password);
// بررسی اتصال
if ($conn->connect_error) {
  die("اتصال ناموفق: " . $conn->connect_error);
}
echo "اتصال موفقیت‌آمیز بود";
?>

توجه: در مثال شیءگرا فوق:

  • $connect_error تا نسخه‌های PHP 5.2.9 و 5.3.0 دچار مشکل بود. اگر نیاز دارید تا سازگاری با نسخه‌های قبل از 5.2.9 و 5.3.0 را تضمین کنید، از کد زیر استفاده کنید:

// بررسی اتصال
if (mysqli_connect_error()) {
  die("اتصال پایگاه داده ناموفق: " . mysqli_connect_error());
}

مثال (MySQLi رویه‌ای)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
// ایجاد اتصال
$conn = mysqli_connect($servername, $username, $password);
// بررسی اتصال
if (!$conn) {
  die("اتصال ناموفق: " . mysqli_connect_error());
}
echo "اتصال موفقیت‌آمیز بود";
?>

مثال (PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // تنظیم حالت خطا به استثنا
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "اتصال موفقیت‌آمیز بود";
} catch(PDOException $e) {
  echo "اتصال ناموفق: " . $e->getMessage();
}
?>

توجه: در مثال PDO فوق، همچنین پایگاه داده‌ای (myDB) مشخص شده است. PDO نیاز به پایگاه داده معتبر برای اتصال دارد. اگر پایگاه داده‌ای مشخص نشود، استثنا پرتاب می‌شود.

نکته: یک مزیت بزرگ PDO این است که یک کلاس استثنا برای مدیریت مشکلاتی که ممکن است در پرس و جوهای پایگاه داده ما پیش بیاید، دارد. اگر در بلوک try{} استثنا پرتاب شود، اسکریپت متوقف شده و مستقیماً به بلوک catch(){} می‌رود.

بستن اتصال

اتصال به طور خودکار زمانی که اسکریپت تمام می‌شود، بسته می‌شود. برای بستن اتصال قبل از آن، از موارد زیر استفاده کنید:

MySQLi شیءگرا:

$conn->close();

MySQLi رویه‌ای:

mysqli_close($conn);

PDO:

$conn = null;

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.