Transcript php_mysql_2

1
เนื้อหา
ขั้นตอนในการเรี ยกใช้ฐานข้อมูลจากเว็บ
 ฟังก์ชน
ั อื่นๆ ที่เกี่ยวข้องกับการจัดการฐานข้อมูล

2
ขั้นตอนในการเรี ยกใช้ฐานข้อมูลจากเว็บ
การเชื่อมต่ อกับฐานข้ อมูล
การเรียกใช้ ฐานข้ อมูลผ่ านเว็บ
การใช้ ภาษา SQL กับฐานข้ อมูล MySQL
การยกเลิกการเชื่อมต่ อกับฐานข้ อมูล
3
ขั้นตอนในการเรี ยกใช้ฐานข้อมูลจากเว็บ

ในการเขียน PHP เพื่อเรี ยกใช้ฐานข้อมูลมีข้นั ตอนต่างๆ ดังต่อไปนี้
 การเชื่อมต่อกับฐานข้อมูล
 การเรี ยกใช้ฐานข้อมูลผ่านเว็บ
 การใช้ภาษา SQL กับฐานข้อมูล MySQL
 การยกเลิกการเชื่อมต่อกับฐานข้อมูล
4
การเชื่อมต่อกับฐานข้อมูล

การเชื่อมต่อกับฐานข้อมูล MySQL ในภาษา PHP สามารถใช้ 2
ฟังก์ชนั ต่อไปนี้ คือ
 mysql_connect()
 mysql_pconnect()
5
mysql_connect()
รู ปแบบ
int mysql_connection(localhost, username, password)
localhost
ชื่อ database server
หรื อ IP Address ของ
database server
username
ชื่อผูใ้ ช้ฐานข้อมูล
password
รหัสผ่าน
ทาการเชื่อมต่อฐานข้อมูลโดยต้อง
ระบุ database server, ชื่อผูใ้ ช้ และ
รหัสผูใ้ ช้
 เมื่อใช้งานเสร็ จต้อง ต้องยกเลิกการ
เชื่อมต่อด้วยฟังก์ชนั mysql_close()

6
mysql_pconnect()
รู ปแบบ
int mysql_pconnection(localhost, username, password)
localhost
ชื่อ database server
หรื อ IP Address ของ
database server
username
ชื่อผูใ้ ช้ฐานข้อมูล
password
รหัสผ่าน
ทาการเชื่อมต่อฐานข้อมูลโดยต้อง
ระบุ database server, ชื่อผูใ้ ช้ และ
รหัสผูใ้ ช้
 เมื่อใช้งานเสร็ จต้อง จะยกเลิกการ
เชื่อมต่อโดยอัตโนมัติ

7
connect_inc.php
<?php
// connect_inc.php
define("DB_SERVER", "localhost");
define("USERNAME", "root");
define("PASSWORD", "");
define("CURRENT_DB", “ict");
// database server
// username
// no password
// current database
$db = mysql_pconnect( DB_SERVER, USERNAME, PASSWORD);
?>
หมายเหตุ :
่ บั ว่านิสิตตั้งชื่อ หรื อ กาหนดให้ใช้งานฐานข้อมูลตัวใด ในที่น้ ี สมมติให้ใช้
define("CURRENT_DB", “ict"); จะขึ้นอยูก
ฐานข้อมูลชื่อ ict
8
การเรี ยกใช้ฐานข้อมูลผ่านเว็บ
รู ปแบบ
int mysql_select_db(string dbname)
dbname
ชื่อของฐานข้อมูลโดยเราต้องใช้
คาสัง่ mysql_connect() ก่อน
ถึงจะสามารถใช้คาสัง่ นี้ได้

ทาการเรี ยกใช้งานฐานข้อมูลผ่าน
เว็บ โดยเราต้องกาหนดชื่อของ
ฐานข้อมูลที่ตอ้ งการเป็ น
argument ที่ส่งไป
9
การใช้ภาษา SQL มาใช้กบั ฐานข้อมูล MySQL
รู ปแบบ
int mysql_query(string query, [int db_connect])
query
db_connect
คิวรี ที่เรี ยกใช้ฐานข้อมูล
ตัวแปรที่ใช้เชื่อมต่อกับ
ฐานข้อมูลที่ได้จาก

เรี ยกใช้งาน SQL ที่เราต้องการ แต่
ต้องใช้ร่วมกับ
mysql_select_db()
mysql_connect()
10
การใช้ภาษา SQL มาใช้กบั ฐานข้อมูล MySQL
รู ปแบบ
int mysql_db_query(string dbname, string query, [int db_connect])
dbname
ชื่อของฐานข้อมูล
query
คิวรี ที่เรี ยกใช้ฐานข้อมูล
db_connect
ตัวแปรที่ใช้เชื่อมต่อกับฐานข้อมูลที่ได้

เรี ยกใช้งาน SQL ที่เราต้องการ
โดยไม่ตอ้ งใช้ร่วมกับ
mysql_select_db()
จาก mysql_connect()
11
mysql_db_query()
require(“connect_inc.php”);
...
$sql_login = "SELECT * FROM login
WHERE USERNAME='" . $username . "' AND PASSWORD='" .
$password . "'";
เมือ่ เราต้ องการประมวลผล
คาสั่ ง SQL ทีเ่ ตรียมเอาไว้
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
$login_rows = mysql_fetch_array($login_result);
$user = $login_rows["USERNAME"];
...
12
การยกเลิกการเชื่อมต่อกับฐานข้อมูล
รู ปแบบ
int mysql_close(db_connect)
db_connect
ตัวแปรที่เก็บการเชื่อมต่อ
ฐานข้อมูลด้วยคาสั่ง
mysql_connect() ไว้

ทาการยกเลิกการเชื่อมต่อกับ
ฐานข้อมูลที่เราเชื่อมต่อผ่าน
คาสัง่ mysql_connect()
13
ฟังก์ชนั อื่นๆ ที่เกี่ยวข้องกับการจัดการฐานข้อมูล
ฟังก์ชนั
คาอธิบาย
mysql_free_result()
ใช้สาหรับคืนหน่วยความจาให้ระบบ
mysql_create_db()
ใช้สาหรับสร้างฐานข้อมูล
ใช้สาหรับลบฐานข้อมูล
ใช้สาหรับดึงผลลัพธ์จากฐานข้อมูลไปเก็บไว้ในอาร์เรย์
mysql_drop_db()
mysql_fetch_array()
mysql_fetch_row()
ใช้สาหรับเลื่อนตาแหน่งของตัวชี้ขอ้ มูลไปยังเรคอร์ดถัดไป
14
ฟังก์ชนั อื่นๆ ที่เกี่ยวข้องกับการจัดการฐานข้อมูล
ฟังก์ชนั
คาอธิบาย
mysql_insert_id()
ใช้สาหรับเรี ยกดู PK กรณี ที่เรากาหนดเป็ นauto_increment
ภายหลังจากการเพิ่มข้อมูล
mysql_num_rows()
ใช้สาหรับนับจานวนเรคอร์ด (SELECT)
mysql_affected_rows()
ใช้สาหรับนับจานวนเรคอร์ดที่มีการเปลี่ยนแปลงล่าสุ ด
(INSERT, UPDATE, DELETE)
15
ฟังก์ชนั อื่นๆ ที่เกี่ยวข้องกับการจัดการฐานข้อมูล
ฟังก์ชนั
คาอธิบาย
mysql_result()
ใช้สาหรับแสดงผลลัพธ์ในฐานข้อมูล ตามแถว (record) และ
คอลัมน์(Field) ที่กาหนด
mysql_fetch_object()
ใช้สาหรับดึงค่าผลลัพธ์จากฐานข้อมูลไปไว้ใน object โดยที่เราจะ
สามารถระบุชื่อฟิ ลด์ได้เลย
mysql_data_seek()
ใช้สาหรับระบุตาแหน่งของเรคอร์ดที่ตอ้ งการเริ่ มต้น (เรคอร์ดแรก
คือ 0 )
16
ฟังก์ชนั อื่นๆ ที่เกี่ยวข้องกับการจัดการฐานข้อมูล
ฟังก์ชนั
mysql_list_dbs()
คาอธิบาย
ใช้สาหรับคืนค่าตัวชี้ (handle) ของฐานข้อมูล ใช้
ร่ วมกับ mysql_num_rows() เพื่อแสดงจานวน
ฐานข้อมูลทั้งหมด หรื อใช้ร่วมกับ
mysql_tablename() เพื่อแสดงชื่อของฐานข้อมูลที่เรา
กาหนด
17
ฟังก์ชนั อื่นๆ ที่เกี่ยวข้องกับการจัดการฐานข้อมูล
ฟังก์ชนั
mysql_list_tables()
คาอธิบาย
ใช้สาหรับคืนค่าตัวชี้ (handle) ของฐานข้อมูลที่เราระบุ โดยใช้ร่วมกับ
mysql_list_dbs() เพื่อแสดงจานวนตารางข้อมูลทั้งหมดในฐานข้อมูล
หรื อใช้ร่วมกับ mysql_tablename() เพื่อแสดงรายชื่อของตาราง
18
ฟังก์ชนั อื่นๆ ที่เกี่ยวข้องกับการจัดการฐานข้อมูล
ฟังก์ชนั
คาอธิบาย
mysql_list_fields()
ใช้สาหรับคืนค่าตัวชี้ (handle) ที่จะนาไปหารายละเอียด
เกี่ยวกับคอลัมน์ในตารางและฐานข้อมูลที่กาหนด
mysql_tablename()
ใช้แสดงชื่อของฐานข้อมูล หรื อ ตารางที่เราระบุ
19
mysql_free_result()
รู ปแบบ
int mysql_free_result(int result)
result
ตัวแปรที่เก็บผลลัพธ์จากการคิวรี
ข้อมูลจากฐานข้อมูล

ใช้สาหรับคืนหน่วยความจาที่จดั เก็บ
ผลลัพธ์ขอ้ มูลจากการคิวรี ขอ้ มูลจาก
ฐานข้อมูล
20
mysql_free_result()
require(“connect_inc.php”);
...
$sql_login = "SELECT * FROM login
WHERE USERNAME='" . $username . "' AND PASSWORD='" .
$password . "'";
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
เมือ่ เราเลิกใช้ งาน result
$login_rows = mysql_fetch_array($login_result);
$user = $login_rows["USERNAME"];
ทีไ่ ด้ จาก mysql_db_query()
หากต้ องการคืนค่ าให้ กบั หน่ วยความจา
mysql_free_result($login_result);
...
21
mysql_create_db()
รู ปแบบ
int mysql_create_db(string dbname [, int db_connect])
dbname
ชื่อของฐานข้อมูลที่ตอ้ งการสร้าง

db_connect
รายละเอียดของการเชื่อมต่อ
ฐานข้อมูล
ทาการสร้างฐานข้อมูล สาหรับ
db_connect ที่เรากาหนด
22
mysql_create_db()
require(“connect_inc.php”);
...
mysql_create_db(“pyo”, $db);
เมือ่ เราต้ องการสร้ างฐานข้ อมูลชื่อ pyo
...
23
mysql_drop_db()
รู ปแบบ
int mysql_drop_db(string dbname [, int db_connect])
dbname
ชื่อของฐานข้อมูลที่ตอ้ งการลบ

db_connect
รายละเอียดของการเชื่อมต่อ
ฐานข้อมูล
ทาการลบฐานข้อมูล สาหรับ
db_connect ที่เรากาหนด
24
mysql_drop_db()
require(“connect_inc.php”);
...
mysql_drop_db(“pyo”, $db);
เมือ่ เราต้ องการลบฐานข้ อมูลชื่อ pyo
...
25
mysql_fetch_array()
รู ปแบบ
array mysql_fetch_array(int result [, int result_type])
result
ข้อมูลที่ได้มาจาก mysql_query() หรื อ
mysql_db_query()

ดึงค่าผลลัพธ์ที่ได้จากคาสัง่
mysql_query() หรื อ
mysql_db_query()
result_type
กาหนดค่าที่จดั เก็บในอาร์เรย์
-associative key ให้กาหนดเป็ น
เก็บลงอาร์เรย์เพื่อนาไปใช้งานต่อไป
MYSQL_ASSOC
-numeric key ให้กาหนดเป็ น
MYSQL_NUM
26
mysql_fetch_array()
require(“connect_inc.php”);
...
$sql_login = "SELECT * FROM”;
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
เมือ่ เราต้ องการนาข้ อมูล 1 เรคอร์ ด
ทีไ่ ด้ จากตารางข้ อมูล login
while($login_rows = mysql_fetch_array($login_result)){
มาจัดเก็บไว้ ในอาร์ เรย์
echo “username =” . $login_rows["USERNAME"]; ชื่อ $login_rows
echo “password =” . $login_rows[“PASSWORD"]; . “<br/>;
หากต้ องการอ่ านข้ อมูลทั้งหมด
}
ต้ องใช้ loop while เพือ่ อ่ านข้ อมูล
ทีม่ ใี ห้ หมด
...
27
mysql_fetch_row()
รู ปแบบ
array mysql_fetch_row(int result)
result
ข้อมูลที่ได้มาจาก
mysql_query() หรื อ
mysql_db_query()

ใช้สาหรับเลื่อนตาแหน่งของตัวชี้ไป
ยังเรคอร์ดถัดไป (MoveNext)
28
mysql_fetch_array()
require(“connect_inc.php”);
...
$sql_login = "SELECT * FROM login”;
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
เมือ่ เราต้ องการนาข้ อมูล 1
while($login_rows = mysql_fetch_row($login_result)){
echo “username =” . $login_rows[0];
echo “password =” . $login_rows[1] . “<br/>;
}
...
เรคอร์ ด
ทีไ่ ด้ จากตารางข้ อมูล login
มาจัดเก็บไว้ ในอาร์ เรย์
ชื่อ $login_rows
หากต้ องการอ่ านข้ อมูลทั้งหมด
ต้ องใช้ loop while เพือ่ อ่ านข้ อมูล
ทีม่ ีให้ หมด
29
mysql_insert_id()
รู ปแบบ
int mysql_insert_id([ int db_connect ])
db_connect
รายละเอียดของการเชื่อมต่อ
ฐานข้อมูล
ใช้เรี ยกแสดงค่า PK ล่าสุ ดของตาราง
ที่เราทาการเพิ่มข้อมูล
 โดยฟิ ลด์ PK ต้องกาหนดเป็ น

auto_increment
30
mysql_insert_id ()
require(“connect_inc.php”);
...
$insert_author = “INSERT INTO AUTHOR (AUTHOR_NAME)
VALUES(‘SOMCHAI DEEJAI’)”;
เราไม่ จาเป็ นต้ องใส่ ค่า
$insert_result = mysql_db_query(CURRENT_DB, $insert_author);
$author_id = mysql_insert_id();
หลังจากเพิม่ ข้ อมูลเสร็จเราสามารถตรวจสอบค่ า
echo “The lastauthor_id
author_idได้isจ”ากค
. $author_id;
าสั่ ง mysql_insert_id()
...
ทีจ่ ะส่ งค่ ากลับเป็ น ค่ า auto_increment ล่ าสุ ด
ซึ่งก็คอื author_id นั้นเอง
author_id ในส่ วนของ
คาสั่ ง insert เนื่องจากว่ า
author_id มีชนิดเป็ น
auto_increment
31
mysql_num_rows()
รู ปแบบ
int mysql_num_rows(int result)
result
ข้อมูลที่ได้มาจาก
mysql_query() หรื อ
mysql_db_query()

ใช้สาหรับนับจานวนเรคอร์ ดที่เรา
SELECTจากการใช้คาสั่ง
mysql_query()
หรื อ mysql_db_query()
32
mysql_num_rows()
require(“connect_inc.php”);
...
$sql_login = "SELECT * FROM login”;
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
$rows = mysql_num_rows($login_result);
echo “You have ” . $rows . “ record(s)”;
ระบบจะทาการนับและส่ งกลับ
จานวนเรคอร์ ดข้ อมูลทีอ่ ่ านได้ จาก
คาสั่ ง SQL
...
33
mysql_affected_rows()
รู ปแบบ
int mysql_affected_rows([ int db_connect ])
db_connect
รายละเอียดของการเชื่อมต่อ
ฐานข้อมูล

ใช้สาหรับนับจานวนเรคอร์ ดที่มีการ
เปลี่ยนแปลงล่าสุ ด (INSERT,
UPDATE, DELETE)
34
mysql_affected_rows()
require(“connect_inc.php”);
...
$sql_login = “DELETE * FROM login”;
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
ระบบจะทาการนับและส่ งกลับ
$rows = mysql_affected_rows($login_result); จานวนเรคอร์ ดข้ อมูลทีไ่ ด้ รับ
echo “You are delete” . $row . “ record(s)”; ผลกระทบจาก SQL ในกรณีที่
เป็ นการ INSERT, UPDATE, DELETE
...
35
mysql_result()
รู ปแบบ
mixed mysql_result(int result, int record [, mixed field])
result
ข้อมูลที่ได้มาจาก
mysql_query() หรื อ
mysql_db_query()
record
ตาแหน่งเรคอร์ ด
field
ตาแหน่งฟิ ลด์ขอ้ มูล

ใช้สาหรับแสดงผลลัพธ์ในฐานข้อมูล
ตามแถว (record) และคอลัมน์(Field)
ที่กาหนด
36
mysql_result()
require(“connect_inc.php”);
...
$sql_login = "SELECT * FROM login”;
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
echo mysql_result($login_result, 0, 1);
echo mysql_result($login_result, 1, 0);
เมือ่ เราแสดงข้ อมูลในเรคอร์ ด
และฟิ ลด์ ทเี่ ราต้ องการ โดยเฉพาะ
เจาะจง
...
37
mysql_fetch_object()
รู ปแบบ
int mysql_fetch_object(int result)
result
ข้อมูลที่ได้มาจาก
mysql_query() หรื อ
mysql_db_query()

ใช้สาหรับดึงค่าผลลัพธ์จาก
ฐานข้อมูลไปไว้ใน object โดยที่เรา
จะสามารถระบุชื่อฟิ ลด์ได้เลย
38
mysql_fetch_object()
require(“connect_inc.php”);
...
$sql_login = "SELECT * FROM login”;
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
while($obj = mysql_fetch_object($login_result)){
เมือ่ เราแสดงข้ อมูลในเรคอร์ ด
ทีถ่ ูกกาหนดในลักษณะ object
echo “username =” . obj -> USERNAME . “<br/>”;
echo “password =” . obj -> PASSWORD . “<br/>”;
}
...
39
mysql_data_seek()
รู ปแบบ
int mysql_data_seek(int result, int record )
result
ข้อมูลที่ได้มาจาก
mysql_query() หรื อ
mysql_db_query()
record

ใช้สาหรับระบุตาแหน่งของเรคอร์ ดที่
ต้องการเริ่ มต้น
(เรคอร์ดแรก คือ 0 )
ตาแหน่งเรคอร์ ดที่ตอ้ งการ
เริ่ มค้นหา
40
mysql_data_seek()
require(“connect_inc.php”);
...
$sql_login = "SELECT * FROM login”;
$login_result = mysql_db_query(CURRENT_DB, $sql_login);
mysql_data_seek($login_result, 1);
// start search from record 2
while($login_rows = mysql_fetch_array($login_result)){
echo “username =” . $login_rows[“USERNAME”];
echo “password =” . $login_rows[“PASSWORD”] . “<br/>;
}
41
mysql_list_dbs()
รู ปแบบ
int mysql_list_dbs([ int db_connect ])
db_connect
รายละเอียดของการเชื่อมต่อ
ฐานข้อมูล

ใช้สาหรับคืนค่าตัวชี้ (handle) ของ
ฐานข้อมูล ใช้ร่วมกับ
mysql_num_rows() เพื่อแสดงจานวน
ฐานข้อมูลทั้งหมด หรื อใช้ร่วมกับ
mysql_tablename() เพื่อแสดงชื่อของ
ฐานข้อมูลที่เรากาหนด
42
mysql_list_dbs()
require(“connect_inc.php”);
...
$db_list = mysql_list_dbs($db);
echo "You have " . mysql_num_rows($db_list) . " database(s)" ;
...
43
mysql_list_tables()
รู ปแบบ
int mysql_list_tables(string dbname [, int db_connect ])
dbname
ชื่อของฐานข้อมูลที่ตอ้ งการ
แสดงรายละเอียดตาราง
db_connect
รายละเอียดของการเชื่อมต่อ
ฐานข้อมูล

ใช้สาหรับคืนค่าตัวชี้ (handle) ของ
ฐานข้อมูลที่เราระบุ โดยใช้ร่วมกับ
mysql_list_dbs() เพื่อแสดงจานวน
ตารางข้อมูลทั้งหมดในฐานข้อมูล หรื อใช้
ร่ วมกับ mysql_tablename() เพื่อแสดง
รายชื่อของตาราง
44
mysql_list_tables()
require(“connect_inc.php”);
...
$table_list = mysql_list_tables(CURRENT_DB, $db);
echo "You have ". mysql_num_rows($table_list) ." table(s) in “ .CURRENT_DB.
“ database”; ;
...
45
mysql_list_fields()
รู ปแบบ
int mysql_list_fields(string dbname, string table_name [, int db_connect ])
dbname
ชื่อของฐานข้อมูลที่ตอ้ งการ
แสดงรายละเอียดตาราง
table_name
ชื่อของตาราง
db_connect
รายละเอียดของการเชื่อมต่อ
ฐานข้อมูล

ใช้สาหรับคืนค่าตัวชี้ (handle)
ของฐานข้อมูลที่เราระบุ โดยจะ
แสดงรายชื่อฟิ ลด์ที่จดั เก็บในตาราง
ที่เราต้องการแสดงรายละเอียดฟิ ลด์
46
mysql_list_fields()
require(“connect_inc.php”);
...
$field_list = mysql_list_fields(CURRENT_DB, “login”, $db);
while($i < mysql_num_fields($field_list)){
echo “field name = “ . mysql_field_name($field_list, $i) . “<br/>”;
echo “field flag = “ . mysql_field_flags($field_list, $i) . “<br/>”;
echo “field type = “ . mysql_field_type($field_list, $i) . “<br/>”;
$i++;
}
...
47
mysql_tablename()
รู ปแบบ
int mysql_tablename( int handle, int number)
handle
ตัวชี้ (handle) ของฐานข้อมูล
number
ลาดับของฐานข้อมูลหรื อตารางที่
ต้องการแสดง

ใช้แสดงชื่อของฐานข้อมูล หรื อ
ตารางที่เราระบุ
48
mysql_tablename()
require(“connect_inc.php”);
...
$db_list = mysql_list_dbs($db);
echo "You have " . mysql_num_rows($db_list) . " database(s) <br/>";
for($i=0; $i < mysql_num_rows($db_list); $i++){
echo $i + 1 . ". " . mysql_tablename($db_list, $i) . " <br/>";
}
echo "<hr>";
$db_table = mysql_list_tables(CURRENT_DB, $db);
echo "You have " . mysql_num_rows($db_table). " table(s) in " . CURRENT_DB
. " database <br/>";
for($i=0; $i < mysql_num_rows($db_table); $i++){
echo $i + 1 . ". " . mysql_tablename($db_table, $i) . " <br/>";
49
สรุ ป

ในการเชื่อมต่อกับระหว่าง PHP กับ MySQL มีลาดับการทางาน
เพื่อให้สามารถใช้งานฐานข้อมูลกับ PHP ได้อย่างถูกต้อง คือ




การเชื่อมต่อกับฐานข้อมูล
การเรี ยกใช้ฐานข้อมูลผ่านเว็บ
การใช้ภาษา SQL กับฐานข้อมูล MySQL
การยกเลิกการเชื่อมต่อกับฐานข้อมูล
50
สรุ ป

ปัญหาอีกอย่างที่พบคือ นิสิตไม่มีความเข้าใจในความแตกต่างของ
ชนิดข้อมูลตัวเลข สตริ ง และวันเวลา เพราะว่าเมื่อเราออกแบบ
ตารางข้อมูล และกาหนดชนิดข้อมูลให้กบั ข้อมูลแล้วนั้น การที่นิสิต
จะ SELECT, INSERT, DELETE, UPDATE ข้อมูลในตารางได้
นั้นต้องระบุชนิดข้อมูลใน SQL เพื่อให้ทราบว่าค่าของฟิ ลด์ใดใน
ตารางข้อมูลที่เป็ นตัวเลข หรื อ สตริ ง หรื อ วันเวลา
51