PHP و پایگاه داده: ساخت پایگاه داده و جدول

08 مرداد 1398
درسنامه درس 22 از سری آموزش PHP 7
PHP و پایگاه داده: ساخت پایگاه داده و جدول

حتما شما هم می دانید که پایگاه های داده ی مختلفی در سطح وب وجود دارد. اگر بحث در مورد پایگاه داده ی MySQL باشد شما می توانید با استفاده از PHPMyAdmin به ساخت پایگاه داده در PHP و جدول های آن بپردازید اما برخی از اوقات ممکن است به محیط PHPMyAdmin دسترسی نداشته باشیم و بخواهیم پایگاه داده یا جدول هایش را با زبان SQL بسازیم. در این مقاله میخواهیم این موضوع را مورد بحث قرار دهیم.

ساخت پایگاه داده با زبان SQL بسیار ساده است؛ کافی است از دستور CREATE DATABASE استفاده کنید:

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
    echo "Database created successfully";
} else {
    echo "Error creating database: " . $conn->error;
}

$conn->close();
?>

در مثال بالا پایگاه داده ای به نام myDB ساخته ایم و به آن متصل نیز شده ایم! اما همیشه هنگام ساخت پایگاه داده به نکات زیر توجه کنید:

  • اگر پایگاه داده ی جدیدی ساخته اید، فقط و فقط باید 3 پارامتر اول شیء mysqli را به آن بدهید (servername, username and password).
  • اگر مجبور هستید از پرت خاصی استفاده کنید به جای نام پایگاه داده یک رشته ی خالی به آن بدهید. مثال:

new mysqli("localhost", "username", "password", "", port)

ساخت پایگاه داده با متد رویه ای MySQLi نیز به این شکل است:

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// Create database
$sql = "CREATE DATABASE myDB";
if (mysqli_query($conn, $sql)) {
    echo "Database created successfully";
} else {
    echo "Error creating database: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

همچنین اگر بخواهیم از PDO استفاده کنیم می گوییم:

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
    $conn = new PDO("mysql:host=$servername", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "CREATE DATABASE myDBPDO";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "Database created successfully<br>";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

ساخت جدول با SQL

تا اینجا یک پایگاه داده ساخته ایم اما هنوز جدولی در این پایگاه داده وجود ندارد. برای ساخت جدول ها (table) در پایگاه داده می توانیم از دستور CREATE TABLE استفاده کنیم:

CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

در کد بالا جدولی به نام MyGuests (مهمان های من) ساخته ایم که 5 ستون دارد: id و firstname و lastname و email و reg_date. بعد از نام هر ستون عبارتی شبیه به (INT(6 یا (VARCHAR(30 میبینید که Data type یا نوع داده های مجاز برای آن ستون می باشد. این نوع داده ها مشخص می کنند که هر ستون اجازه دارد چه نوع داده هایی را بگیرد؛ به طور مثال INT یعنی عدد صحیح (این ستون فقط می تواند عدد صحیح بگیرد) یا VARCHAR یعنی کاراکترها به صورت کلی (شامل اعداد و حروف) و الی آخر. برای توضیحات بیشتر و کامل تر به دوره ی آموزشی SQL در روکسو مراجعه کنید.

پس از مشخص کردن نوع داده، گزینه های دیگری نیز وجود دارد که می تواند برای هر ستون مشخص شود:

  • NOT NULL: این گزینه یعنی هر ستون باید مقداری بگیرد و مقادیر null مجاز نخواهند بود.
  • DEFAULT: زمانی که هیچ مقداری برای یک خانه مشخص نشود مقدار پیش فرض تعیین شده توسط این دستور در آن خانه قرار می گیرد.
  • UNSIGNED: برای اعداد استفاده شده و فقط اجازه ی استفاده از اعداد مثبت و صفر را می دهد.
  • AUTO INCREMENT: پایگاه داده با ساخته شدن هر ردیف جدید یک واحد به مقدار ستونی که AUTO INCREMENT داشته باشد اضافه می کند.
  • PRIMARY KEY: یک کلید خاص و غیرتکراری است که برای مشخص کردن یک ردیف خاص از جدول مورد استفاده قرار می گیرد. ستونی که PRIMARY KEY می گیرد معمولا ستون id است که قابلیت AUTO_INCREMENT را نیز دارد.

هر جدول ما باید یک primary key داشته باشد که معمولا ستون id است. در مثال های زیر ساخت جدول را با سه روش شیء گرای MySQLi و شیء گرای PDO و حالت رویه ای MySQLi انجام داده ایم:

روش اول: MySQLi شیء گرا

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

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if ($conn->query($sql) === TRUE) {
    echo "Table MyGuests created successfully";
} else {
    echo "Error creating table: " . $conn->error;
}

$conn->close();
?>

روش دوم: MySQLi رویه ای

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

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if (mysqli_query($conn, $sql)) {
    echo "Table MyGuests created successfully";
} else {
    echo "Error creating table: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

روش سوم: PDO

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

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // sql to create table
    $sql = "CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    )";

    // use exec() because no results are returned
    $conn->exec($sql);
    echo "Table MyGuests created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

امیدوارم از درس ساخت پایگاه داده در php استفاده ی کافی را برده باشید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش PHP 7 توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما (1 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مجتبی
13 مرداد 1398
سلام سوال دارم میشه بدون دونستن sql هم با پایگاه داده کار کرد؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
16 مرداد 1398
سلام دوست عزیز بدون SQL نمیشه با پایگاه های داده ای مثل MySQL کار کرد. بعضی از برنامه ها ممکنه وجود داشته باشن که این کار رو واسه ی شما انجام بدن اما استفاده از اونها اصلا توصیه نمیشه. زبان SQL اونقدر سخت نیست میتونید راحت و سریع یاد بگیرین چون به زبان انسان خیلی نزدیکه

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.