Home
Main Page

PHP Basic
Introduction
Syntax
Variables
Operators
If...Else
Switch
Arrays
Looping
Functions
Forms
GET
POST

PHP Advanced
Date
Include
File
File Upload
Cookies
Sessions
Mail
Secure Mail

MySQL Database
Introduction
Connect
Create
Insert
Select
Where
Order By
Update
Delete

PHP Database
ODBC

PHP Reference
PHP Manual

PHP MySQL Create



ในบทเรียนนี้ จะนำเสนอเกี่ยวกับการสร้างฐานข้อมูล และตาราง โดยฟังก์ชั่นที่สำคัญ คือ mysql_query()
การสร้างฐานข้อมูล

การสร้างฐานข้อมูลใน MySQL มี syntax ดังนี้

CREATE DATABASE database_name
คุณต้องใช้ MySQL syntax ข้างบนนี้ ควบคู่ไปกับฟังก์ชั่น mysql_query() มาดูตัวอย่างกัน ในที่นี้จะสร้างฐานข้อมูลชื่อว่า "my_data"

<?php
$con = mysql_connect("localhost","joey","abc123");
if (!$con)
  {
  die('ติดต่อฐานข้อมูลไม่ได้ เนื่องจาก: ' . mysql_error());
  }
$sql = "CREATE DATABASE my_data";
if (mysql_query($sql,$con))
  {
  echo "ฐานข้อมูล my_data สร้างแล้ว";
  }
else
  {
  echo "เกิดความผิดพลาด: " . mysql_error();
  }
?>

การสร้างตาราง

การสร้างตารางใน MySQL มี syntax ดังนี้

CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
.......
)
ตัวอย่างการสร้างตารางข้างล่างนี้จะแสดงการสร้างตารางชื่อว่า "Customers" ที่มี 3 คอลัมน์ คือ FirstName, LastName และ Age

mysql_select_db("my_data", $con);
$sql = "CREATE TABLE Customers 
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);
จากตัวอย่าง ต้องทำการเลือกฐานข้อมูลซะก่อนในบรรทัดที่หนึ่ง แล้วจึงจะทำการสร้างตารางได้

ถ้า data type เป็น varchar จะต้องระบุค่าพารามิเตอร์ลงไปด้วย ในที่นี้ คือ 15 ตัวอักษร
ตารางของชนิดข้อมูล (Data Type)

ชนิดของข้อมูลอาจแบ่งได้ 3 กลุ่มหลักๆ คือ ตัวเลข, วันที่และเวลา และ ข้อความ (String) สำหรับค่าตัวเลขสามารถกำหนดความยาวของตัวเลขและจำนวนหลังจุดทศนิยมได้ ขึ้นอยู่กับเป็นข้อมูลชนิดใด ในที่นี้ค่าความยาวของตัวเลขและข้อความ รวมจุดทศนิยมจะแทนด้วยตัว M และจำนวนตัวเลขหลังจุดทศนิยมจะแทนด้วยตัว D

ข้อมูลชนิดตัวเลข (Numeric)

Type Bytes Description
TINYINT(M) 1 -128 ถึง 127 หรือ 0 ถึง 255
SMALLINT(M) 2 -32768 ถึง 32767 หรือ 0 ถึง 65535
MEDIUMINT(M) 3 -8388608 ถึง 8388607 หรือ 0 ถึง 16777215
INT(M), INTEGER(M) 4 -231 ถึง 231-1 หรือ 0 ถึง 232-1
BIGINT(M) 8 -263 ถึง 263-1 หรือ 0 ถึง 264-1
FLOAT(M,D) 4 +-1.175494351E-38
+-3.402823466E+38
DOUBLE(M,D) 8 +-1.7976931348623157E+308
+-2.2250738585072014E-308
DECIMAL(M,D) M+2 เปลี่ยนแปลงได้ ขึ้นอยู่กับความยาวของตัวเลข (M)

ข้อมูลชนิดวันที่และเวลา (Date and Time)

Type Form Description
DATE YYYY-MM-DD แสดงวันที่
TIME HH:MM:SS แสดงเวลา
DATETIME YYYY-MM-DD HH:MM:SS แวดงวันที่และเวลา
TIMESTAMP[(M)] YYYYMMDDHHMMSS แสดงวันที่และเวลาตามรูปแบบที่กำหนด ขึ้นอยู่กับ M ว่ายาวเท่าไรด้วย
YEAR[(2|4)] YYYY แสดงปี ได้ทั้ง 2 หลัก หรือ 4 หลัก

ข้อมูลชนิดสตริง (String)

Type Description
CHAR(M) มีค่า 1 ถึง 255
VARCHAR(M) มีค่า 1 ถึง 255
TINYTEXT มีค่า 1 ถึง 255
TEXT
BLOB
มีค่า 1 ถึง 65535
MEDIUMTEXT
MEDIUMBLOB
มีค่า 1 ถึง 16777215
LONGTEXT
LONGBLOB
มีค่า 1 ถึง 4294967295

ข้อมูลชนิด SET และ ENUM

Type Description
ENUM(value1,value2,...) เป็นการเก็บข้อมูลสตริงเข้าไว้เป็นรายการไว้ก่อน โดยค่าแรกถูกแทนด้วยค่า 1 หากรายการไม่ตรงกับรายการใดเลย จะแทนด้วยค่า 0 หรือจะใส่เป็นค่าตรงๆเลยก็ได้ ข้อมูลชนิดนี้จะช่วยลดพื้นที่การจัดเก็บได้อย่างมาก เหมาะกับการเลือกแบบลิสต์บ็อกซ์ เพราะเลือกได้เพียง 1 ตัวเลือกเท่านั้น

ENUM เก็บค่ารายการได้สูงถึง 65535 ตัวเลือก
SET(value1,value2,...) คล้ายกับ ENUM แต่เลือกรายการได้มากกว่าหนึ่งตัวเลือก จะใช้เลขฐานสองเก็บค่าตัวเลือก โดยรายการแรกมีค่า 1, 2, 4, 8, 16, 32,... ไปเรื่อยๆ ถ้าเลือกรายการไหนก็เอามาบวกกันจะได้ค่าที่จะเก็บบันทึก เหมาะกับการเลือกแบบเช็คบ็อกซ์ เพื่อให้ผู้ตอบเลือกได้มากกว่า 1 ตัวเลือก

SET เก็บค่ารายการได้เพียง 64 ตัวเลือก

Primary Key และ Auto increment

แต่ละตารางควรจะมีค่าที่ไม่ซ้ำกันในแต่ละเรคอร์ด เพื่อแยกข้อมูลได้ชัดเจน ฟิลด์แบบนี้เรียกว่า primary key ส่วนใหญ่จะเป็นฟิลด์ที่ระบุค่า ID และมักจะใช้ AUTO_INCREMENT เพื่อให้ตัวเลขรันเรียงไปเรื่อยๆ ทีละหนึ่ง เพื่อไม่ให้ฟิลด์นั้นไม่ซ้ำกันเลย และเพื่อไม่ให้เป็นค่าว่าง ต้องเพิ่ม NOT NULL ลงไปด้วย

ตัวอย่างข้างล่างนี้จะเพิ่มฟิลด์ id เป็น primary key ซึ่งจะไม่มีค่าซ้ำกันได้เลย

$sql = "CREATE TABLE Customers 
(
id int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(id),
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);



Related Sites
php.net
mysql
phpMyAdmin
apache
thainuke
microsoft
linux
PostgreSQL
Zend Technologies
CentOS

Special Thanks
ohohost.com
w3schools.com

Advertise




Power By



 
2279194







Copyright 2006 by Phpstreet. All Rights Reserved.