پرش به محتوا

پی‌اچ‌پی/کار با پایگاه داده

ویکی‎کتاب، کتابخانهٔ آزاد
‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎
‎‏مقدمه‏‎‎‏نحوه توسعه پی‌اچ‌پی‏‎‎‏ساختار اولیه‏‎‎‏انواع داده‏‎‎‏متغیرها‏‎‎‏ثابت‌ها‏‎
‎‏بانک اطلاعاتی‏‎‎‏کار با پایگاه داده‏‎‎‏جلسه‌ها‏‎‎‏کار با فرم‌ها‏‎‎‏توابع‏‎‎‏کار با تاریخ و زمان‏‎

مقدمه

[ویرایش]

زبان برنامه‌نویسی پی‌اچ‌پی (PHP) یکی از پرکاربردترین زبان‌ها برای توسعه وب است که امکان اتصال و مدیریت پایگاه‌های داده مانند MySQL را فراهم می‌کند. MySQL یک سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) متن‌باز است که به دلیل سرعت، قابلیت اطمینان و انعطاف‌پذیری، در پروژه‌های وب بسیار محبوب است. این مقاله به توضیح مفاهیم پایه MySQL، اتصال به آن با PHP، اجرای کوئری‌ها و مدیریت داده‌ها می‌پردازد.

MySQL چیست؟

[ویرایش]

MySQL یک سیستم مدیریت پایگاه داده رابطه‌ای است که برای ذخیره، سازمان‌دهی و بازیابی داده‌ها به‌صورت کارآمد طراحی شده است. ویژگی‌های کلیدی MySQL عبارت‌اند از:متن‌باز و رایگان مناسب برای پروژه‌های کوچک و بزرگ ذخیره‌سازی داده‌ها در جداول شامل ستون‌ها و ردیف‌ها سرعت و عملکرد بالا پشتیبانی از زبان SQL استاندارد

ساختار پایگاه داده

[ویرایش]

داده‌ها در MySQL در قالب پایگاه داده (Database) ذخیره می‌شوند که شامل مجموعه‌ای از جداول (Tables) است. هر جدول از ستون‌ها (Columns) و ردیف‌ها (Rows) تشکیل شده است. به‌عنوان مثال، یک شرکت ممکن است جداول زیر را داشته باشد:کارمندان (Employees): شامل نام، نام خانوادگی، شماره کارمندی محصولات (Products): شامل نام محصول، قیمت، موجودی مشتریان (Customers): شامل نام مشتری، آدرس، شماره تماس سفارشات (Orders): شامل شماره سفارش، تاریخ، مشتری مرتبط

کوئری‌های پایگاه داده

[ویرایش]

کوئری (Query) درخواستی است که با زبان SQL برای بازیابی، درج، به‌روزرسانی یا حذف داده‌ها نوشته می‌شود. مثال:

SELECT LASTNAME FROM Employees;

این کوئری تمام مقادیر ستون LASTNAME را از جدول Employees بازیابی می‌کند.

انواع کوئری‌های SQL

[ویرایش]
  • SELECT: انتخاب، بازیابی داده ها
  • INSERT: افزودن داده‌های جدید
  • UPDATE: به‌روزرسانی داده‌های موجود
  • DELETE: حذف داده‌ها

پیش‌نیازها

[ویرایش]

برای کار با MySQL و PHP، نصب نرم‌افزارهای زیر ضروری است:

  • وب‌سرور: مانند Apache یا NginxPHP: نسخه 7.4 یا بالاتر
  • MySQL: سرور پایگاه داده
  • ابزار مدیریت: مانند phpMyAdmin

نصب با WampServer

[ویرایش]

WampServer شامل Apache، PHP، MySQL و phpMyAdmin است.

مراحل نصب:

[ویرایش]
  • دانلود WampServer از WampServer نصب با تنظیمات پیش‌فرض
  • اجرای WampServer (آیکون سبز در نوار وظیفه)دسترسی به phpMyAdmin از طریق http://localhost/phpmyadmin
  • ایجاد پایگاه داده جدید (مثلاً company_db) و ذخیره نام کاربری (معمولاً root) و رمز عبور (پیش‌فرض خالی)

اتصال به MySQL با PHP

[ویرایش]

اتصال به MySQL در PHP با دو روش انجام می‌شود:

  • mysqli: افزونه بهبودیافته برای MySQL
  • MySQLPDO: روش انعطاف‌پذیر برای پایگاه‌های داده مختلف.

اتصال با Mysqli

[ویرایش]
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company_db";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("اتصال ناموفق: " . $conn->connect_error);
}
echo "اتصال با موفقیت برقرار شد";
?>

اتصال با PDO

[ویرایش]
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company_db";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "اتصال با موفقیت برقرار شد";
} catch(PDOException $e) {
    echo "اتصال ناموفق: " . $e->getMessage();
}
?>

مثال‌های کاربردی

[ویرایش]

فرض کنید جدول Employees با ساختار زیر وجود دارد:

CREATE TABLE Employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(50),
    lastname VARCHAR(50),
    email VARCHAR(100)
);

1. درج داده (INSERT)

[ویرایش]
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company_db";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("اتصال ناموفق: " . $conn->connect_error);
}

$sql = "INSERT INTO Employees (firstname, lastname, email) VALUES ('علی', 'محمدی', '...[at]example.com')";

if ($conn->query($sql) === TRUE) {
    echo "رکورد جدید با موفقیت اضافه شد";
} else {
    echo "خطا: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

2. بازیابی داده (SELECT)

[ویرایش]
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company_db";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("اتصال ناموفق: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname, email FROM Employees";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "شناسه: " . $row["id"]. " - نام: " . $row["firstname"]. " " . $row["lastname"]. " - ایمیل: " . $row["email"]. "<br>";
    }
} else {
    echo "هیچ نتیجه‌ای یافت نشد";
}

$conn->close();
?>

3. به‌روزرسانی داده (UPDATE)

[ویرایش]
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company_db";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("اتصال ناموفق: " . $conn->connect_error);
}

$sql = "UPDATE Employees SET email='newemail[at]example.com' WHERE id=1";

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

$conn->close();
?>

4. حذف داده (DELETE)

[ویرایش]
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company_db";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("اتصال ناموفق: " . $conn->connect_error);
}

$sql = "DELETE FROM Employees WHERE id=1";

if ($conn->query($sql) === TRUE) {
    echo "رکورد با موفقیت حذف شد";
} else {
    echo "خطا: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

نکات امنیتی

[ویرایش]
  • جلوگیری از تزریق SQL:

استفاده از Prepared Statements برای امنیت بیشتر:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company_db";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $stmt = $conn->prepare("INSERT INTO Employees (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);
    
    $firstname = "سارا";
    $lastname = "احمدی";
    $email = "sara[at]example.com";
    $stmt->execute();
    
    echo "رکورد جدید با موفقیت اضافه شد";
} catch(PDOException $e) {
    echo "خطا: " . $e->getMessage();
}
?>
  • مدیریت خطاها: بررسی خطاهای اتصال و کوئریرمزگذاری رمز عبور: ذخیره رمز عبور در فایل‌های تنظیمات جداگانه (مانند config.php)

جمع‌بندی

[ویرایش]

اتصال PHP به MySQL برای توسعه وب حیاتی است. با ابزارهایی مانند WampServer و phpMyAdmin و رعایت نکات امنیتی، می‌توان برنامه‌های وب ایمن و کارآمد ساخت.