PHP – اتصال PHP به پایگاه داده (PHP Connect to MySQL)
آیا باید از 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;
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام