مقدمه
کار با دیتابیسها در PHP یکی از مهارتهای ضروری برای هر توسعهدهنده وب است. PHP بهعنوان یک زبان سمت سرور، بهخوبی با دیتابیسهای مختلفی چون MySQL، PostgreSQL و SQLite کار میکند. در اینجا، یک نمونه برنامه ساده برای کار با دیتابیس MySQL در PHP را بررسی میکنیم.
مراحل ساخت برنامه
۱. راهاندازی دیتابیس
ابتدا، نیاز داریم یک دیتابیس بسازیم. برای این کار، میتوانیم از phpMyAdmin یا خط فرمان MySQL استفاده کنیم.
```sql
CREATE DATABASE sample_db;
USE sample_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
```
۲. اتصال به دیتابیس
در مرحله بعد، باید به دیتابیس متصل شویم. برای این کار از تابع `mysqli_connect()` استفاده میکنیم.
```php
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "sample_db";
// ایجاد اتصال
$conn = mysqli_connect($servername, $username, $password, $dbname);
// بررسی اتصال
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
?>
```
۳. درج دادهها
حالا که اتصال برقرار شد، میتوانیم دادهها را وارد کنیم. برای این کار از یک پرسوجو استفاده میکنیم.
```php
$name = "John Doe";
$email = "john@example.com";
$sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
```
۴. خواندن دادهها
برای خواندن دادهها از دیتابیس، از دستور `SELECT` استفاده میکنیم.
```php
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 results";
}
```
۵. بهروزرسانی و حذف دادهها
در نهایت، میتوانیم دادهها را بهروزرسانی یا حذف کنیم.
```php
// بهروزرسانی
$sql = "UPDATE users SET email='john.doe@example.com' WHERE name='John Doe'";
// حذف
$sql = "DELETE FROM users WHERE id=1";
```
نتیجهگیری
در این مقاله، یک برنامه ساده برای کار با دیتابیس در PHP را بررسی کردیم. این برنامه شامل مراحل اتصال، درج، خواندن، بهروزرسانی و حذف دادهها بود. با استفاده از این مبانی، میتوانید برنامههای پیچیدهتری بسازید. توجه داشته باشید که استفاده از Prepared Statements برای جلوگیری از حملات SQL Injection بسیار مهم است.
برنامه کار با دیتابیس در PHP: راهنمای کامل و جامع
در دنیای برنامهنویسی وب، کار با دیتابیس یکی از مهمترین بخشها است. PHP، به عنوان یک زبان سمت سرور، ابزارهای قدرتمندی برای ارتباط با دیتابیسها فراهم کرده است. در این راهنما، قصد دارم تمامی جنبههای مربوط به نمونه برنامه کار با دیتابیس در PHP را پوشش دهم، از نصب اولیه تا بهترین شیوههای توسعه.
۱. مقدمهای بر کار با دیتابیس در PHP
قبل از شروع، باید بدانید که PHP چندین روش برای ارتباط با دیتابیس دارد. محبوبترین آنها، MySQL و MySQLi است. همچنین، PDO (PHP Data Objects) یک گزینه انعطافپذیر و امن محسوب میشود که قابلیت اتصال به انواع دیتابیسها را دارد.
۲. نصب و راهاندازی دیتابیس
ابتدا باید یک دیتابیس MySQL یا MariaDB نصب کنید. فرض میکنیم که سرور محلی دارید، مثلا XAMPP یا WAMP. پس از نصب، وارد phpMyAdmin شوید و دیتابیس جدید بسازید، مثلا:
```sql
CREATE DATABASE sample_db;
USE sample_db;
```
سپس، یک جدول نمونه ایجاد کنید:
```sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100),
age INT
);
```
۳. اتصال به دیتابیس در PHP
برای ارتباط با دیتابیس، چند روش وجود دارد. در ادامه، نمونههای پیدرپی با PDO و MySQLi را نشان میدهم.
۳.۱. روش PDO
```php
<?php
try {
$dsn = 'mysql:host=localhost;dbname=sample_db;charset=utf8mb4';
$username = 'your_username';
$password = 'your_password';
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "اتصال برقرار شد!";
} catch (PDOException $e) {
echo "خطا در اتصال: " . $e->getMessage();
}
?>
```
۳.۲. روش MySQLi
```php
<?php
$conn = new mysqli('localhost', 'your_username', 'your_password', 'sample_db');
if ($conn->connect_error) {
die("خطا در اتصال: " . $conn->connect_error);
}
echo "اتصال برقرار شد!";
?>
```
۴. عملیات پایهای: CRUD (ایجاد، خواندن، بروزرسانی، حذف)
برای مدیریت دادهها، باید عملیات CRUD را بدانید.
۴.۱. درج داده (Create)
# با PDO:
```php
<?php
$name = 'علی';
$email = 'ali@example.com';
$age = 25;
$stmt = $pdo->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
$stmt->execute([$name, $email, $age]);
echo "رکورد اضافه شد!";
?>
```
# با MySQLi:
```php
<?php
$sql = "INSERT INTO users (name, email, age) VALUES ('علی', 'ali@example.com', 25)";
if ($conn->query($sql) === TRUE) {
echo "رکورد اضافه شد!";
}
?>
```
۴.۲. خواندن دادهها (Read)
# با PDO:
```php
<?php
$stmt = $pdo->query("SELECT * FROM users");
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as $user) {
echo $user['name'] . " - " . $user['email'] . "<br>";
}
?>
```
# با MySQLi:
```php
<?php
$result = $conn->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
echo $row['name'] . " - " . $row['email'] . "<br>";
}
?>
```
۴.۳. بروزرسانی دادهها (Update)
# با PDO:
```php
<?php
$id = 1;
$newEmail = 'ali_new@example.com';
$stmt = $pdo->prepare("UPDATE users SET email = ? WHERE id = ?");
$stmt->execute([$newEmail, $id]);
echo "رکورد بروزرسانی شد!";
?>
```
# با MySQLi:
```php
<?php
$sql = "UPDATE users SET email='ali_new@example.com' WHERE id=1";
if ($conn->query($sql) === TRUE) {
echo "رکورد بروزرسانی شد!";
}
?>
```
۴.۴. حذف دادهها (Delete)
# با PDO:
```php
<?php
$id = 1;
$stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
$stmt->execute([$id]);
echo "رکورد حذف شد!";
?>
```
# با MySQLi:
```php
<?php
$sql = "DELETE FROM users WHERE id=1";
if ($conn->query($sql) === TRUE) {
echo "رکورد حذف شد!";
}
?>
```
۵. نکات مهم و بهترین شیوهها
- استفاده از Prepared Statements: برای جلوگیری از حملات SQL Injection، همواره از Prepared Statements استفاده کنید.
- مدیریت خطاها: همیشه خطاهای ارتباط با دیتابیس را کنترل کنید و در صورت بروز، راهکار مناسب ارائه دهید.
- بستهبندی کدها: بهتر است عملیات دیتابیس را در کلاسها و توابع جداگانه قرار دهید.
- استفاده از تراکنشها: برای عملیاتهای حساس، از تراکنشها بهره ببرید.
- بکاپگیری منظم: هرگز اهمیت بکاپ را نادیده نگیرید، مخصوصاً در برنامههای حرفهای.
۶. نمونه برنامه کامل
در ادامه، یک نمونه برنامه ساده و کامل برای درج، خواندن و حذف دادهها در PHP با PDO آورده شده است:
```php
<?php
// اتصال به دیتابیس
try {
$dsn = 'mysql:host=localhost;dbname=sample_db;charset=utf8mb4';
$pdo = new PDO($dsn, 'your_username', 'your_password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("خطا در اتصال: " . $e->getMessage());
}
// درج داده
$name = 'مهدی';
$email = 'mahdi@example.com';
$age = 30;
$stmt = $pdo->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
$stmt->execute([$name, $email, $age]);
// خواندن دادهها
$stmt = $pdo->query("SELECT * FROM users");
echo "<h2>لیست کاربران:</h2>";
while ($user = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "نام: " . $user['name'] . " | ایمیل: " . $user['email'] . "<br>";
}
// حذف داده
$deleteId = 2;
$stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
$stmt->execute([$deleteId]);
echo "کاربر با شناسه $deleteId حذف شد.";
?>
```
نتیجهگیری
در این راهنما، سعی کردم تمامی موارد ضروری برای کار با دیتابیس در PHP را پوشش دهم. مهم است که همیشه بهترین شیوهها را رعایت کنید و امنیت برنامهتان را حین توسعه حفظ نمایید. بطور کلی، کار با دیتابیس در PHP میتواند ساده، اما بسیار قدرتمند باشد، اگر با دقت و تمرکز انجام شود.
اگر سوالی دارید یا نیاز به نمونههای بیشتری دارید، در خدمتتان هستم!