اتصال PHP به MySQL

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Php-menu.png
موارد آموزشی
فرم‌ها در PHP
PHP پیشرفته
شیء گرایی در PHP
پایگاه داده MySQL
۱پایگاه داده MySQL
۲اتصال به MySQL
۳ساخت پایگاه داده
۴ساخت جدول
۵وارد کردن داده
۶دریافت شناسهٔ آخرین سطر
۷وارد کردن چندین داده
۸دستور Prepared
۹انتخاب داده
۱۰دستور Where
۱۱دستور Order By
۱۲حذف داده
۱۳بروزرسانی داده
۱۴محدودسازی داده
XML در PHP
AJAX در PHP
مثال‌های PHP
مرجع PHP

PHP 5 و نسخه‌های بعدی می‌توانند با یک پایگاه داده MySQL با استفاده از: [۱]

  • پسوند MySQLi (حرف "i" مخفف عبارت بهبود یافته‌است)
  • PDO (شیء داده PHP (به انگلیسی: PHP Data Object))

کار کنند.

نسخه‌های قدیمی‌تر PHP از پسوند MySQL استفاده می‌کردند. اما، این پسوند در سال ۲۰۱۲ منسوخ شد.

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

اگر شما یک پاسخ کوتاه نیاز دارید، این پاسخ "هر کدام را که دوست دارید" خواهد بود.

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

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

بنابراین، اگر شما مجبور هستید که در پروژه خود از پایگاه داده دیگری استفاده کنید، PDO این فرایند را آسان می‌کند. شما تنها می‌بایست برخی اتصالات متنی (به انگلیسی: connection string) و کوئری‌ها را تغییر دهید. با MySQLi، شما نیاز خواهید داشت که کد حاضر را بازنویسی کنید - که بازنویسی کوئری‌ها را نیز می‌بایست به آن اضافه کنید.

هر دو شیء گرا هستند، اما MySQLi همچنین API، رویه‌ای (به انگلیسی: procedural) را نیز به کاربران ارائه می‌دهد.

هردوی آنها از دستورات prepared پشتیبانی می‌کنند. دستوات Prepare پایگاه داده شما را از حملات SQL injection محافظت می‌کند و برای امنیت نرم‌افزارهای وب بسیار مهم هستند.

مثال‌های MySQL در هر دو شیوه نوشتار MySQLi و PDO

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

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

نصب MySQLi

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

برای اطلاعات بیشتر در مورد مراحل نصب، به آدرس روبه رو مراجعه کنید: http://php.net/manual/en/mysqli.installation.php

نصب PDO

برای اطلاعات بیشتر در مورد مراحل نصب، به آدرس روبه رو مراجعه کنید: http://php.net/manual/en/pdo.installation.php

ایجاد یک اتصال به MySQL

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

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

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 
 6 // Create connection
 7 $conn = new mysqli($servername, $username, $password);
 8 
 9 // Check connection
10 if ($conn->connect_error) {
11     die("Connection failed: " . $conn->connect_error);
12 }
13 echo "Connected successfully";
14 ?>

نکته‌ای در مورد مثال شیء گرا بالا

متغیر $connect_error در نسخه PHP ۵٫۲٫۹ و ۵٫۳٫۰ ایجاد شد. اگر شما می‌خواهید از سازگاری آن با نسخه‌های قدیمی قبل از نسخه‌های ۵٫۲٫۹ و ۵٫۳٫۰ اطمینان حاصل کنید، از کد زیر به جای آن استفاده کنید:

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

مثال (برنامه نویسی رویه ای در MySQLi)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 
 6 // Create connection
 7 $conn = mysqli_connect($servername, $username, $password);
 8 
 9 // Check connection
10 if (!$conn) {
11     die("Connection failed: " . mysqli_connect_error());
12 }
13 echo "Connected successfully";
14 ?>

مثال (PDO)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 
 6 try {
 7     $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
 8     // set the PDO error mode to exception
 9     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
10     echo "Connected successfully";
11     }
12 catch(PDOException $e)
13     {
14     echo "Connection failed: " . $e->getMessage();
15     }
16 ?>
نکته: در مثال PDO بالا ما همچنین یک دیتابیس را مشخص کرده‌ایم (mydb). شیء داده PHP (به انگلیسی: PHP Data Object) به یک دیتابیس معتبر برای اتصال نیاز دارد. اگر دیتابیسی مشخص نشود، یک خطا ایجاد می‌شود.

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

بستن اتصال

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

شیء گرایی در MySQLi

$conn->close();

برنامه نویسی رویه ای در MySQLi

mysqli_close($conn);

PDO

$conn = null;


منابع آموزشی