پیاچپی/کار با پایگاه داده
| مقدمه | نحوه توسعه پیاچپی | ساختار اولیه | انواع داده | متغیرها | ثابتها |
| بانک اطلاعاتی | کار با پایگاه داده | جلسهها | کار با فرمها | توابع | کار با تاریخ و زمان |
مقدمه
[ویرایش]زبان برنامهنویسی پیاچپی (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 و رعایت نکات امنیتی، میتوان برنامههای وب ایمن و کارآمد ساخت.