ورود
سورس سافت bread crumb arrow icon وبلاگ bread crumb arrow icon ساخت جدول در PHP

ساخت جدول دیتابیس در PHP؛ از اتصال امن تا طراحی درست جدول

برای پخش ویدیو کلیک کنید
مالک پست تعیین نشده
clock icon مدت زمان مطالعه: 6 دقیقه
comment icon 0 نظرات
1404/09/26

هر پروژه‌ای که حتی مقدار کمی داده در خود دارد، بالاخره به یک جدول احتیاج پیدا می‌کند. خیلی‌ها اولین جدول را داخل phpMyAdmin می‌سازند، اما وقتی پروژه کمی بزرگ‌تر می‌شود بهتر است همه چیز از داخل خود PHP مدیریت شود. این کار چند فایده مهم دارد. مثلاً اگر پروژه را روی یک سرور تازه بالا بیاورید دیگر نیاز نیست دستی جدول بسازید. همچنین هر تغییری که در ساختار دیتابیس اتفاق بیفتد در نسخه‌های بعدی پروژه دقیق ثبت می‌شود.

در این مطلب قرار نیست فقط چند خط کد ببینیم. سعی شده توضیح داده شود چرا هر مرحله مهم است و موقع ساخت جدول چه تصمیم‌هایی باید بگیریم تا در آینده کارمان راحت‌تر باشد.

مراحل ساخت جدول در PHP

اتصال PHP به دیتابیس؛ مرحله‌ای ساده اما سرنوشت‌ساز

برای ساخت هر جدول، اول باید PHP بتواند با دیتابیس حرف بزند. این ارتباط یا با MySQLi برقرار می‌شود یا PDO. تفاوت‌شان زیاد نیست اما PDO به شما آزادی بیشتری می‌دهد، مخصوصاً وقتی نمی‌دانید پروژه در آینده به چه سمتی می‌رود یا ممکن است روی دیتابیس دیگری اجرا شود.

نمونه اتصال با MySQLi

<?php
$connection = new mysqli("localhost", "root", "", "mydb");

if ($connection->connect_error) {
die("خطا در اتصال: " . $connection->connect_error);
}
?>

نمونه اتصال با PDO
<?php
try {
$db = new PDO("mysql:host=localhost;dbname=mydb", "root", "");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "اتصال برقرار نشد. " . $e->getMessage();
}
?>

ساخت جدول در MySQL؛ چیزی فراتر از یک Query ساده

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

مثال با MySQLi!!!

<?php
$sql = "CREATE TABLE users (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY
fullname VARCHAR(50) NOT NULL
email VARCHAR(100)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";

if ($connection->query($sql) === TRUE) {
echo 'جدول users ساخته شد.';
} else {
echo 'خطا در ساخت جدول. ' . $connection->error;
}
?>

مثال با PDO!!!

<?php
try {
$query = "CREATE TABLE products (
id SERIAL PRIMARY KEY
title VARCHAR(100) NOT NULL
price INT
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";

$db->exec($query);
echo 'جدول products ایجاد شد.';
} catch (PDOException $e) {
echo 'خطا. ' . $e->getMessage();
}
?>

ساخت جدول در PostgreSQL؛ تفاوت‌ها و نکات ریز

اگر پروژه شما با PostgreSQL کار می‌کند، باز هم روند تقریبا مشابهی را طی می‌کنید. تنها نکته این است که PostgreSQL بعضی از نوع داده‌ها را کمی متفاوت مدیریت می‌کند. مثلاً SERIAL در PostgreSQL بسیار راحت‌تر از AUTO_INCREMENT در MySQL عمل می‌کند.

مثال PostgreSQL!!!

<?php
try {
$pg = new PDO("pgsql:host=localhost;dbname=testdb", "postgres", "password");
$pg->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "CREATE TABLE customers (
id SERIAL PRIMARY KEY
name VARCHAR(100) NOT NULL
city VARCHAR(50)
)";

$pg->exec($sql);
echo 'جدول customers ساخته شد.';
} catch (PDOException $e) {
echo 'خطا. ' . $e->getMessage();
}
?>

چند نکته که در عمل بسیار کمک می‌کنند

این‌ها نکاتی هستند که بیشتر برنامه‌نویس‌ها بعد از چند سال تجربه به آن‌ها می‌رسند:

  • هر جدول باید یک کلید اصلی داشته باشد. نبودن آن در آینده دردسر درست می‌کند.
  • نام ستون‌ها را تا حد ممکن واضح انتخاب کنید. ستونی که بعداً در یک Query پیچیده استفاده می‌شود باید معنی‌دار باشد.
  • نوع داده اشتباه انتخاب کنید، بعداً تمام بخش‌های پروژه دچار مشکل می‌شوند.
  • اگر پروژه در حال رشد است از همان اول PDO انتخاب کنید تا تغییر دیتابیس به مشکلی تبدیل نشود.
  • Queryهای مربوط به ایجاد جدول را وسط صفحه اصلی سایت قرار ندهید. بهتر است در یک فایل جدا باشد.
  • ورودی‌هایی که به Query می‌رسند باید بررسی شوند. خیلی وقت‌ها مشکل امنیتی دقیقاً از همین نقطه شروع می‌شود .

اشتباهاتی که معمولاً دیده می‌شود

بیش از نیمی از مشکلات دیتابیس به خاطر همین چند مورد است:

  • جدول بدون PRIMARY KEY
  • تعریف VARCHAR با اندازه‌های غیر استاندارد
  • استفاده از نام‌گذاری نامفهوم
  • ایجاد جدول بدون توجه به روابط آینده
  • عدم کنترل خطا در زمان ایجاد یا اتصال

این خطاها ساده به نظر می‌رسند، اما وقتی پروژه کمی بزرگ‌تر شود، رفعشان زمان زیادی می‌گیرد.

نتیجه‌گیری

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

اگر این اصول را رعایت کنید، پایه دیتابیس پروژه شما محکم‌تر می‌شود و در آینده نه خودتان به مشکل می‌خورید و نه تیمی که قرار است پروژه را توسعه دهد.

این مقاله چقدر برای شما مفید بود؟
0 امتیاز از 0 رای
tags
برچسب ها
questions
سوالات متداول

معمولاً قبل از اجرای دستور ایجاد جدول، یک Query ساده با SHOW TABLES یا INFORMATION_SCHEMA اجرا می شود. اگر جدول پیدا شد، همان‌جا از ساخت دوباره‌ٔ آن جلوگیری می کنید تا خطا نگیرید.

نه! MySQLi هم این کار را انجام می دهد. اما اگر پروژه احتمال دارد در آینده به PostgreSQL یا دیتابیس دیگری منتقل شود، PDO انتخاب بهتری است چون فقط Query تغییر می کند نه کل ساختار اتصال.

مهم‌ترین خطاها معمولاً از نام گذاری ستون‌ها، نوع داده اشتباه یا نبودن دسترسی کافی در دیتابیس ایجاد می شود. گاهی هم اگر از کاراکترهای فارسی استفاده کنید باید Collation را درست تنظیم کنید تا مقدارها خراب نشوند.

دیدگاه و پرسش

هیچ نظری ثبت نشده است