پایگاه داده MySQL
اتصال به MySQL با PDO و MySQLi — INSERT، SELECT، UPDATE و DELETE
PHP و دیتابیس
PHP برای کار با دیتابیس MySQL دو روش اصلی دارد:
- PDO (PHP Data Objects) — پشتیبانی از چند نوع دیتابیس (پیشنهادی)
- MySQLi — مخصوص MySQL
اتصال با PDO
<?php
$host = "localhost";
$dbname = "my_database";
$user = "root";
$pass = "";
try {
$pdo = new PDO(
"mysql:host=$host;dbname=$dbname;charset=utf8mb4",
$user,
$pass,
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
echo "اتصال موفق!";
} catch (PDOException $e) {
echo "خطا: " . $e->getMessage();
}
?>
ایجاد جدول (CREATE TABLE)
<?php
$sql = "CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
$pdo->exec($sql);
?>
درج داده (INSERT)
<?php
// روش امن با Prepared Statement
$sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
":name" => "علی",
":email" => "ali@example.com",
":age" => 25
]);
echo "ID: " . $pdo->lastInsertId();
?>
خواندن داده (SELECT)
<?php
// همه رکوردها
$stmt = $pdo->query("SELECT * FROM users");
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as $user) {
echo $user["name"] . " - " . $user["email"];
}
// با شرط
$stmt = $pdo->prepare("SELECT * FROM users WHERE age > :age");
$stmt->execute([":age" => 18]);
$adults = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
بهروزرسانی (UPDATE)
<?php
$sql = "UPDATE users SET age = :age WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([":age" => 26, ":id" => 1]);
echo $stmt->rowCount() . " رکورد بهروزرسانی شد.";
?>
حذف (DELETE)
<?php
$sql = "DELETE FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([":id" => 1]);
?>
CRUD خلاصه
| عملیات | SQL |
|---|---|
| Create | INSERT |
| Read | SELECT |
| Update | UPDATE |
| Delete | DELETE |
همیشه از Prepared Statement استفاده کنید تا از حملات SQL Injection جلوگیری شود!
این مبحث بخشی از دوره آموزش کامل PHP است.