01/10/2018, 15:33

Bài 21: PHP – MySQL Create Database Tables

Tạo Database Để tạo và xóa một database bạn nên có admin privilege (đặc quyền quản trị). Thật dể dàng để tạo một db mới trong MySQL. PHP sử dụng mysql_query để tạo MySQL database. Hàm này có 2 đối số và trả về TRUE nếu thành công hoặc FALSE nếu thất bại. Cú pháp: bool mysql_query(sql, ...

Tạo Database

Để tạo và xóa một database bạn nên có admin privilege (đặc quyền quản trị). Thật dể dàng để tạo một db mới trong MySQL. PHP sử dụng mysql_query để tạo MySQL database. Hàm này có 2 đối số và trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Cú pháp: bool mysql_query(sql, connection);

No Đối số và Mô tả
1 sql

Bắt buộc – SQL query để tạo database. Bạn truyền vào câu query để tạo database.

2 connection

Tùy chọn – Nếu không chỉ định thì kết nối được mở sau cùng bởi hàm mysql_connect sẽ được sử dụng.

Ví dụ:

<?php

   $dbhost = ‘localhost:3036’;

   $dbuser = ‘root’;

   $dbpass = ‘rootpassword’;

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

   if(! $conn ) {

      die(‘Could not connect: ‘ . mysql_error());

   }

   echo ‘Connected successfully’;

   $sql = ‘CREATE Database test_db’;

   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {

      die(‘Could not create database: ‘ . mysql_error());

   }

   echo “Database test_db created successfully ”;

   mysql_close($conn);

?>

Như ví dụ trên ta tiến hành mở kết nối, nếu kết nối thành công thì sẽ tạo db bằng câu query tạo db truyền vào mysql_query. Chúng ta kết nối với account là root, account được xác lập quyền quản trị cao nhất, nên nó sẽ tạo được database.

Trong PHP có một hàm dùng để dừng tiến trình thực thi của script đó là hàm die, nếu hàm này được gọi thì nó vừa làm nhiệm vụ display chuỗi thông báo ra màn hình(nếu truyền vào) và dừng tất cả các đoạn script ngay sau nó luôn.

Đừng quên đóng kết nối khi sử dụng xong nhé và cũng không quên chỉ định đối số kết nối hiện hành cho nó. Điều này đã giải thích ở bài 20 roài.

Chọn Database

Một khi bạn đã thiết lập một kết nối với database server thì nó yêu cầu chọn một database bạn muốn làm việc.

Cái này được yêu cầu bởi vì có nhiều db cư trú trong một server và bạn có thể làm việc với một db ở một thời điểm.

PHP cung cấp hàm mysql_select_db để chọn một database. Nó trả về TRUE/FALSE nếu thành công/thất bại.

Cú pháp: bool mysql_select_db(db_name, connection);

No Đối số & Mô tả
1 db_name

Bắt buộc – tên db để chọn

2 connection

Tùy chọn – Nếu không chỉ định thì nó lấy kết nối sau cùng.

EX:

<?php

   $dbhost = ‘localhost:3036’;

   $dbuser = ‘guest’;

   $dbpass = ‘guest123’;

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

      if(! $conn ) {

      die(‘Could not connect: ‘ . mysql_error());

      }

      echo ‘Connected successfully’;

      mysql_select_db( ‘test_db’ );

      mysql_close($conn);

?>

Bạn có thể kiễm tra bằng cách đặt mysql_select_db trong if, để xem db có tồn tại hay không, hoặc lý do nào đó gây ra FALSE.

Tạo Table

Để tạo table trong một database mới bạn cần làm giống như việc tạo database vậy.

Trước hết tạo cấu query để tạo table và sau đó thực thi bằng hàm mysql_query.

<?php

   $dbhost = ‘localhost:3036’;

   $dbuser = ‘root’;

   $dbpass = ‘rootpassword’;

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

   if(! $conn ) {

      die(‘Could not connect: ‘ . mysql_error());

   }

   echo ‘Connected successfully’;

   $sql = ‘CREATE TABLE employee( ‘.

      ’emp_id INT NOT NULL AUTO_INCREMENT, ‘.

      ’emp_name VARCHAR(20) NOT NULL, ‘.

      ’emp_address  VARCHAR(20) NOT NULL, ‘.

      ’emp_salary   INT NOT NULL, ‘.

      ‘join_date    timestamp(14) NOT NULL, ‘.

      ‘primary key ( emp_id ))’;

   mysql_select_db(‘test_db’);

   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {

      die(‘Could not create table: ‘ . mysql_error());

   }

   echo “Table employee created successfully ”;

   mysql_close($conn);

?>

Trong trường hợp bạn cần tạo nhiều table thì cách tốt nhất là tạo một file text và đặt tất cả câu lệnh SQL trong file text đó, sau đó load file đó vào biến $sql và thực thi bằng câu lệnh.

Ta xem trong file sql_query.txt có nội dung như sau:

CREATE TABLE employee(

   emp_id INT NOT NULL AUTO_INCREMENT,

   emp_name VARCHAR(20) NOT NULL,

   emp_address  VARCHAR(20) NOT NULL,

   emp_salary   INT NOT NULL,

   join_date    timestamp(14) NOT NULL,

   primary key ( emp_id ));

script PHP sẽ đọc file và tiến hành thực thi lệnh

<?php

   $dbhost = ‘localhost:3036’;

   $dbuser = ‘root’;

   $dbpass = ‘rootpassword’;

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

      if(! $conn ) {

      die(‘Could not connect: ‘ . mysql_error());

      }

      $query_file = ‘sql_query.txt’;

      $fp = fopen($query_file, ‘r’);

      $sql = fread($fp, filesize($query_file));

      fclose($fp);

      mysql_select_db(‘test_db’);

      $retval = mysql_query( $sql, $conn );

      if(! $retval ) {

          die(‘Could not create table: ‘ . mysql_error());

      }

      echo “Table employee created successfully ”;

      mysql_close($conn);

?>

Về cách đọc file thì cũng có bài hướng dẩn rồi, các bạn nếu không nhớ thì có thể xem lại bài trước. Nói thêm về hàm fread, hàm này dùng để đọc nội dung của file, với kích thước chỉ định, trong ví dụ này ta đọc toàn bộ file, nên đã truyền vào kích thước tối đa của file.

Trong file sql_query.txt , một query tạo table thì phải  có dấu ‘;’ ở cuối, và cứ viết tiếp tục để tạo table khác. Nếu không dùng cách này thì bạn phải tốn nhiều lần gọi câu lệnh mysql_query để thực thi tạo nhiều table.

Bài tập:

Hãy tạo nhiều table gồm : product, order, customer với các thuộc tính tùy bạn chọn và thực thi bằng cách đọc file như ví dụ cuối cùng, thực thi một lần sẽ tạo tất cả các bảng này vào db.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0