چگونه در PHP یک پایگاه داده را متصل کنیم

خلاصه
1404/11/13

اتصال به یک پایگاه داده در PHP روش‌های مختلفی دارد، اما رایج‌ترین و ساده‌ترین روش استفاده از مفسر MySQL است. در اینجا یک راهنمای جامع و گام به گام با توضیحات کامل به همراه مثال

چگونه در PHP یک پایگاه داده را متصل کنیم

اتصال به یک پایگاه داده در PHP روش‌های مختلفی دارد، اما رایج‌ترین و ساده‌ترین روش استفاده از مفسر MySQL است. در اینجا یک راهنمای جامع و گام به گام با توضیحات کامل به همراه مثال ارائه شده است:

**1. پیش‌نیازها:**

* **نصب مفسر MySQL:** اگر هنوز نصب نیست، باید مفسر MySQL را روی سرور خود نصب کنید. می‌توانید از مدیر نصبی مانند XAMPP، WAMP، یا MAMP استفاده کنید.
* **ایجاد پایگاه داده:** با استفاده از ابزارهای مدیریت پایگاه داده مانند phpMyAdmin یا MySQL Workbench، یک پایگاه داده جدید در MySQL ایجاد کنید. (مثلاً با نام `my_database`).
* **ایجاد جدول:** یک جدول در پایگاه داده ایجاد کنید. به عنوان مثال، جدول `users` با ستون‌های `id`, `name`, و `email`.
* **اطمینان از دسترسی:** مطمئن شوید که کاربر MySQL‌ای که PHP از آن استفاده می‌کند، دسترسی به پایگاه داده ایجاد شده و جدول‌ها را دارد.

**2. کد PHP برای اتصال:**

```php

// اطلاعات اتصال به پایگاه داده
$servername = "localhost"; // نام سرور MySQL
$username = "your_username"; // نام کاربری MySQL
$password = "your_password"; // رمز عبور MySQL
$database = "my_database"; // نام پایگاه داده

// ایجاد اتصال
$conn = new mysqli($servername, $username, $password, $database);

// بررسی اتصال
if ($conn->connect_error) {
die("اتصال با خطا: " . $conn->connect_error);
}

echo "به موفقیت به پایگاه داده متصل شدید!";

// ادامه کد برای انجام عملیات پایگاه داده...

$conn->close(); // بستن اتصال
?>
```

**توضیحات کد:**

* `$servername`: آدرس سرور MySQL (معمولاً `localhost` برای نصب محلی).
* `$username`: نام کاربری MySQL که به پایگاه داده دسترسی دارد.
* `$password`: رمز عبور MySQL.
* `$database`: نام پایگاه داده که می‌خواهید به آن متصل شوید.
* `new mysqli()`: این تابع یک شیء اتصال MySQL ایجاد می‌کند.
* `$conn->connect_error`: این ویژگی خطاها را در اتصال نشان می‌دهد. اگر خطایی رخ می‌دهد، کد `die()` اجرا می‌شود و صفحه با خطا بسته می‌شود.
* `$conn->close()`: این تابع اتصال به پایگاه داده را می‌بندد. بسیار مهم است که اتصال را ببندید تا منابع پایگاه داده آزاد شوند.

**3. روش‌های اتصال دیگر در PHP (گزینه‌های دیگر):**

* **PDO (Protected Database Abstraction):** PDO یک رابط سطح بالاتر برای دسترسی به پایگاه داده است و پیشنهادی مدرن و انعطاف‌پذیر برای اتصال به پایگاه داده‌ها است. PDO از چندین نوع پایگاه داده (MySQL, PostgreSQL, SQLite, و غیره) پشتیبانی می‌کند و مدیریت خطاها را آسان‌تر می‌کند.

```php

$dsn = "mysql:host=localhost;dbname=my_database;charset=utf8mb4"; // دسترسی به پایگاه داده
$username = "your_username";
$password = "your_password";

try {
$conn = new PDO($dsn, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // نمایش خطاها
echo "به موفقیت به پایگاه داده متصل شدید!";
} catch(PDOException $e) {
echo "اتصال با خطا: " . $e->getMessage();
}

$conn->close();

?>
```

* `$dsn`: دسترسی به پایگاه داده را مشخص می‌کند. قالب کلی: `mysql:host=...;dbname=...;charset=...`
* `PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION`: این تنظیمات به PDO می‌گوید که در صورت بروز خطا، یک استثنا را ایجاد کند. این کار باعث می‌شود که بتوانید خطاها را به طور دقیق‌تر مدیریت کنید. `charset=utf8mb4` برای پشتیبانی از حروف فارسی و سایر کاراکترهای جدید ضروری است.
* **mysqli:** این یک مناسبیت PHP است که به شما اجازه می‌دهد به پایگاه داده MySQL متصل شوید. این روش از نظر عملکردی می تواند بهینه تر از PDO باشد، اما Flexibilit کمتری دارد.

**4. انجام عملیات پایگاه داده:**

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

* **اضافه کردن داده:**

```php
//... (اتصال به پایگاه داده)

$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com')";

if ($conn->query($sql) === TRUE) {
echo "اطلاعات با موفقیت اضافه شد!";
} else {
echo "خطای بروزرسانی: " . $conn->error;
}

$conn->close();
?>
```

* **خواندن داده:**

```php
//... (اتصال به پایگاه داده)

$sql = "SELECT * FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "
";
}
} else {
echo "هیچ نتیجه ای وجود ندارد";
}

$conn->close();
?>
```

* **به‌روزرسانی داده:**

```php
//... (اتصال به پایگاه داده)

$sql = "UPDATE users SET email = 'new.email@example.com' WHERE id = 1";
if ($conn->query($sql) === TRUE) {
echo "داده با موفقیت به‌روزرسانی شد";
} else {
echo "خطای بروزرسانی: " . $conn->error;
}

$conn->close();

?>
```

* **حذف داده:**

```php
//... (اتصال به پایگاه داده)

$sql = "DELETE FROM users WHERE id = 1";
if ($conn->query($sql) === TRUE) {
echo "داده با موفقیت حذف شد";
} else {
echo "خطای حذف: " . $conn->error;
}

$conn->close();

?>
```

**نکات مهم:**

* **امنیت:** به هیچ وجه رمز عبور پایگاه داده خود را در کد منبع قرار ندهید! از متغیرهای سراسری یا تنظیمات پیکربندی برای ذخیره اطلاعات حساس استفاده کنید.
* **مدیریت خطا:** همیشه بررسی کنید که آیا عملیات پایگاه داده با موفقیت انجام شده است یا خیر. در صورت بروز خطا، پیغام خطا را نمایش دهید.
* **افزایش کارایی:** برای عملیات‌های پیچیده، از تنظیمات مناسب پایگاه داده و استفاده از جداول ایندکس شده استفاده کنید.
* **استفاده از ابزارها:** از ابزارهای مدیریت پایگاه داده مانند phpMyAdmin برای مدیریت پایگاه داده خود استفاده کنید.
* **استفاده از Prepared Statements (برای جلوگیری از SQL Injection):**

```php
// ... (اتصال به پایگاه داده)

$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email); // "ss" به معنای دو رشته است
$stmt->execute();

if ($stmt->success) {
echo "اطلاعات با موفقیت اضافه شد!";
} else {
echo "خطای بروزرسانی: " . $stmt->error;
}

$stmt->close();
$conn->close();

?>
```

Prepared Statements یک راه ایمن برای جلوگیری از SQL Injection هستند، زیرا داده‌ها به عنوان داده‌های جدا از کد در پایگاه داده ذخیره می‌شوند.

امیدوارم این توضیحات به شما کمک کند تا به پایگاه داده خود در PHP متصل شوید و عملیات‌های مورد نیاز را انجام دهید. در صورت داشتن سوال بیشتر، خوشحال می‌شوم پاسخ دهم.