آموزش کامل PHP – قسمت 14: ارتباط با بانک اطلاعاتی

اتصال به بانک های اطلاعاتی از مهمترین مباحث برنامه نویسی است. زبان برنامه نویسی php قابلیت اتصال به انواع بانک های اطلاعاتی را دارا می باشد. در این قسمت از آموزش ما طریقه ارتباط با یکی از محبوب ترین بانک های اطلاعاتی یعنی mysql را آموزش خواهیم داد.

در این قسمت از سری آموزش های php با پردیس وردپرس، پروژه یک سیستم مدیریت محتوا را آغاز می کنیم.

اتصال به بانک اطلاعاتی

ابتدا پوشه ای در htdocs (زمپ) یا www (ومپ) ایجاد کنید و نام دلخواهی (مثلا cms) برای آن انتخاب کنید. در داخل پوشه فایلی به نام config.php ایجاد کنید. (این فایل تنظیمات مربوط به سیستم ما را نگهداری می کند). در واقع برنامه ما از طریق همین فایل به بانک متصل می شود.

حالا باید بانک اطلاعاتی نورد نظرتان را ایجاد کنید. بعد از اجرای نرم افزار سرور مجازی سرویس mysql آن را استارت کنید و آدرس localhost/phpmyadmin را در مرورگر وارد کنید. صفحه ای مانند تصویر زیر باز می شود که شما می توانید بانک های اطلاعاتی خود را در آن ساخته و مدیریت کنید.

ساخت بانک اطلاعاتی

روی Databases کلیک کنید و بعد از وارد کردن اطلاعات، مانند تصویر زیر روی Create کلیک کنید.

ایجاد بانک اطلاعاتی

حال نوبت ساخت جداول است. وارد بخش SQL شده و در بخش مربوطه کد های زیر را قرار دهید و روی Go کلیک کنید.

-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: May 28, 2016 at 02:13 PM
-- Server version: 10.1.9-MariaDB
-- PHP Version: 5.6.15

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `cms`
--

-- --------------------------------------------------------

--
-- Table structure for table `posts`
--

CREATE TABLE `posts` (
  `id` int(11) NOT NULL,
  `title` varchar(200) NOT NULL,
  `text` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `posts`
--
ALTER TABLE `posts`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `posts`
--
ALTER TABLE `posts`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

کد بالا برای ایجاد یک جدول به نام posts است که این جدول سه فیلد دارد. برای هر مطلب یک فیلد برای شماره مطلب وجود دارد که این شماره برای هر رکورد از جدول یکتا خواهد بود. همچنین یک فیلد برای عنوان و یک فیلد نیز برای متن مطلب در نظر گرفته‌ایم. یونیکد این جدول و تمامی فیلد‌های آن نیز utf8-general-ci است.

حال به بخش php بر می گردیم. کد زیر را در فایل config.php قرار دهید.

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbname = "cms";
$dbpass = "";

$connect_db = mysql_connect ($dbhost, $dbuser, $dbpass);

if ($connect_db){
    echo "Connected to db successfully!";
}else{
    echo "error in connecting db";
}
?>

برای اتصال به پایگاه داده mysql در php به چهار متغیر به شرح زیر نیاز داریم:

  1. متغیری برای آدرس بانک اطلاعاتی – dbhost که localhost است
  2. متغیری برای نام کاربری یا یوزرنیم بانک – dbuser که root است
  3. متغیری برای نام بانک اطلاعاتی که cms می باشد
  4. متغیری برای رمز عبور بانک اطلاعلتی – dbpass که خالی است

با استفاده از تابع mysql_connect به دیتابیس متصل شده ایم. این تابع سه آرگومان ورودی دارد که به ترتیب آدرس میزبان بانک داده، نام کاربری بانک داده و رمزعبور کاربر بانک داده هستند. خروجی این تابع که true یا false است را در متغیری به نام connect_db قرار داده ایم. سپس به کمک if آن را کنترل و پیغام مناسب را نمایش می دهیم.

بعد از مراحل فوق یک فایل index.php در پوشه cms ایجاد کرده و کد زیر را در آن قرار می دهیم.

<?php
include ("config.php");
?>

ما فایل config.php را با کد بالا در فایل index,php فراخوانی کرده‌ایم. حالا اگر آدرس http://127.0.0.1/cms/index.php را در مروگرتان اجرا کنید، باید با عبارت !Connected to db successfully مواجه شوید. در غیر این صورت یکی از مراحل را اشتباه انجام داده‌اید.

اگر همه چیز به درستی انجام شده، می توانید بخش if را در فایل config حذف کنید یا به حالت کامنت در آورید. همچنین یک دستور دیگر برای انتخاب بانک cms به آن اضافه کنید.

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbname = "cms";
$dbpass = "";

$connect_db = mysql_connect ($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname,$connect_db);
?>

با استفاده از تابع mysql_select_db می‌توانید به بانک اطلاعاتی مورد نظر خود در سرور mysql متصل شوید. همانطور که می‌بینید این تابع دو آرگومان دارد که ورودی اول نام بانک اطلاعاتی است و آرگومان دوم که تعریف آن اجباری هم نیست، به خروجی تابع اتصال به سرور اشاره دارد. ما خروجی تابع را در متغیر connect_db قرار داده بودیم و از همین رو در آرگومان دوم نام این متغیر را وارد کرده‌ایم.

توجه داشته باشید که ما در این قسمت یک جدول برای ذخیره نوشته های سایت خود ساخته ایم. در این جدول ستون id همان کلید اصلی است و شامل شماره هر سطر در جدول می باشد.