1 / 48

PHP-2

Personal Home Page Hypertext Preprocessor. PHP-2. LESSON 3: PHP กับการเชื่อมต่อฐานข้อมูล MySQL. การส่งข้อมูลด้วย Html Form การส่งข้อมูลด้วย Querystring การเก็บค่าและส่งค่าโดยใช้ Session Object การเก็บค่าและส่งค่าโดยใช้ Cookie Object ตัวแปร Global function.

Download Presentation

PHP-2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Personal Home PageHypertext Preprocessor PHP-2 LESSON 3: PHP กับการเชื่อมต่อฐานข้อมูล MySQL การส่งข้อมูลด้วย Html Form การส่งข้อมูลด้วย Querystring การเก็บค่าและส่งค่าโดยใช้ Session Object การเก็บค่าและส่งค่าโดยใช้ Cookie Object ตัวแปร Global function ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร

  2. การสร้างฐานข้อมูลใหม่การสร้างฐานข้อมูลใหม่ หลังจากล็อกอินเข้าใช้งาน phpMyAdmin แล้ว หากต้องการสร้างฐานข้อมูลให้พิมพ์ชื่อฐานข้อมูลที่ต้องการในช่องสร้างฐานข้อมูลใหม่แล้วคลิก “สร้าง” การใช้งาน phpMyAdmin

  3. การสร้างตารางในฐานข้อมูลการสร้างตารางในฐานข้อมูล หลังจากสร้างฐานข้อมูลแล้วหากต้องการสร้างตารางให้พิมพ์ชื่อตารางที่ต้องการและระบุจำนวนฟิลด์ในตารางที่จะสร้าง จากนั้นคลิก “ลงมือ” หลังจากนั้นให้กรอกข้อมูลของแต่ละฟิลด์แล้วคลิก “บันทึก” การใช้งาน phpMyAdmin

  4. การสร้างตารางในฐานข้อมูลการสร้างตารางในฐานข้อมูล ระบบจะทำการสร้างตารางใหม่ให้อีกทั้งยังสร้าง คำค้น SQL ให้ด้วย การใช้งาน phpMyAdmin

  5. การแก้ไขตารางในฐานข้อมูลการแก้ไขตารางในฐานข้อมูล หากต้องการ แก้ไขข้อมูล ของแต่ละฟิลด์ ให้คลิกปุ่ม หากต้องการลบฟิลด์ให้คลิกปุ่ม การใช้งาน phpMyAdmin หากต้องการเพิ่มฟิลด์ใหม่ให้ระบุ จำนวนฟิลด์ที่ต้องการ และ ตำแหน่งที่ต้องการเพิ่ม จากนั้นคลิก “ลงมือ”

  6. ทดลองสร้างฐานข้อมูล ฐานข้อมูล : db_customer ตาราง : member • CREATE TABLE member (id int(5) NOT NULL auto_increment,user varchar(30) NOT NULL default '',pass varchar(50) NOT NULL default '',name varchar(50) NOT NULL default '',email varchar(50) NOT NULL default '',address varchar(50) NOT NULL default '',PRIMARY KEY (id)) TYPE=MyISAM;

  7. MySQL DATABASE FUNCTION MySQL เป็นระบบฐานข้อมูลที่ใช้งานร่วมกับ PHP หาใช้ได้ง่ายระบบมีประสิทธิ์ภาพสูงและเป็นแบบ RDBMS(ralational database management system) ระบบฐานข้อมูลที่ PHP สามารถเชื่อมต่อได้ OracleSybase mSQL MySQL Solid ODBC PostgreSQLAdabas D FilePro Velocis Informix dBase Unix dbm

  8. คำสั่ง SQL เบื้องต้น • คำสั่ง SQL (structure query language) เป็นคำสั่งที่ใช้ในการติดต่อกับระบบฐานข้อมูล เพื่อ • อ่านข้อมูล • แก้ไขข้อมูล • เพิ่มข้อมูล • การลบข้อมูล

  9. คำสั่ง SQL (ต่อ) คำสั่งที่ใช้อ่านข้อมูล SELECT [ALL | DISTINCT] select_list [INTO new_table_] FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression [ASC | DESC] ]

  10. คำสั่ง SQL ? (ต่อ) คำสั่งที่ใช้แก้ไขข้อมูล UPDATE { table_name WITH ( <table_hint_limited> […n]) | view_name | rowset_function_limited } SET Column_name = { expression | DEFAULT | NULL } { [FROM {<table_source>} [,…n] [ WHERE <search_condition>] }

  11. คำสั่ง SQL ? (ต่อ) คำสั่งที่ใช้เพิ่มข้อมูล INSERT [INTO] { table_name WITH ( <table_hint_limited> […n]) | view_name | rowset_function_limited } { [(column_list)] { VALUES { ( DEFAULT | NULL | expression } [,…n] ) | derived_table | execute_statement } }

  12. คำสั่ง SQL ? (ต่อ) คำสั่งที่ใช้ลบข้อมูล DELETE [FROM] { table_name WITH ( <table_hint_limited> […n] ) | view_name |rowset_function_limited } [FROM {<table_source>} […n] ] [WHERE <search_condition> ]

  13. ฟังก์ชันที่ใช้ติดต่อ MySQL • การนำ PHP ไปใช้เพื่อติดต่อกับระบบฐานข้อมูลนั้นทำได้ง่าย เพราะ PHP ได้เตรียมฟังก์ชันที่ใช้สำหรับการติดต่อไว้แล้ว โดยฟังก์ชันที่เตรียมไว้จะแบ่งตามระบบฐานข้อมูลที่แตกต่างกัน • mysql_connect ติดต่อกับฐานข้อมูล • mysql mysql_close ปิดการเชื่อมตัวกับ mysql • mysql_create_db สร้างฐานข้อมูล • mysql mysql_data_seek เลื่อนพอยเตอร์ภายใน • mysql_db-query ส่งคิวรีไปยัง mysql • mysql_drop_db ลบฐานข้อมูล ใน mysql • mysql_errno ให้ค่า ข้อความ ที่เกิดข้อผิดพลาดจากการทำงาน • mysql mysql_error ให้แสดงค่า ข้อความที่เป็นข้อความจากการทำงานที่ error • mysql mysql_fetch_array เก็บค่าจาก Reccord ลง Array mysql_fetch_filed ใช้ object เพื่อได้ค่าเกี่ยวกับฟิวส์ • mysql_fetch_lengths ค่าขอบเขตแต่ละผลลัพธ์ • mysql_fetch_object ค่าที่เป็น object • mysql_fetch_row ระบุค่าลง Array • mysql_field_name แสดงค่าเป็นชื่อฟิวส์ • mysql_filed_seek กำหนดพอยเตอร์ชี้ไปยังฟิวส์

  14. ฟังก์ชันที่ใช้ติดต่อ MySQL • mysql_filed_table แสดงค่าเป็นชื่อตารางจากชื่อฟิวส์ • mysql_filed_type แสดงค่าเป็นประเภทของฟิวส์ • mysql_filed_len แสดงค่าเป็นขนาดของฟิวส์ • mysql_free_result เป็นการกำหนดให้หน่อยความจำว่างมากขึ้น • mysql_affected_rows หาค่าจำนวน Reccord ในการใช้ Mysql ก่อนหน้านี้ • mysql_change_user เปลี่ยนชื่อล็อกอินสำหรับการติดต่อปัจจุบัน • mysql_insert_id กำหนดค่า id ได้จากคำสั่ง insert ที่ผ่านมา • mysql_list_files แสดงชื่อฟิวส์ของ mysql • mysql_list_dbs แสดงชื่อฐานข้อมูลของ • mysql mysql_list_tables แสดงชื่อตารางในฐานข้อมูลของ mysql • mysql_num_files นับสำนวนฟิวส์ • mysql_num_rows นับจำนวน Reccord mysql_pconnect เปิดการติดต่อกับ mysql ที่มีอยู่แล้ว • mysql_query ส่งคำสั่งคิวรีไปยัง mysql • mysql_result result เพื่อดึงข้อมูล • mysql_select_db ใช้เมื่อต้องการเลือกฐานข้อมูลของ mysql mysql_tablename แสดงชื่อตาราง

  15. mysql_connect • เป็นฟังก์ชันที่ใช้ในการติดต่อกับระบบฐานข้อมูลของ MySQL รูปแบบของคำสั่ง int mysql_connect(string hostname, string username, string password) ; hostname คือเครื่องที่ติดตั้งระบบฐานข้อมูลของ MySQL username คือ ซื่อของผู้ใช้ที่มีสิทธิ์เข้าใช้ระบบฐานข้อมูลของ MySQL password คือ รหัสผ่านของ username

  16. mysql_close • เป็นฟังก์ชันที่ใช้ยกเลิกการติดต่อกับระบบฐานข้อมูล รูปแบบของคำสั่ง int mysql_close(int link_identifier); link_identifier

  17. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”,”root”,”1234”); if($link) { echo “ติดต่อระบบฐานข้อมูลของ MySQL ได้สำเร็จ<br>”; } else { echo “ไม่สามารถติดต่อระบบฐานข้อมูลของ MySQL ได้<br>”; } if ($link) { //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); echo “ยกเลิกการติดต่อกับระบบฐานข้อมูลแล้ว”; } ?>

  18. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”,”root”,””); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db(“CarDB”,$link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query ="select id, name,surname from member"; // ส่งคำสั่งไปทำงานที่ฐานข้อมูล $result = mysql_query($query,$link); //เลื่อน pointer ไปยังแถวที่ 3 $chk = mysql_data_seek($result,2);

  19. ตัวอย่าง(ต่อ) if ($chk) { //อ่านข้อมูลของแถวที่ 3 $data = mysql_fetch_row($result); echo “รหัส $data[0] ของ $data[1] $data[2]”; } else { echo “ไม่สามารถอ่านข้อมูลแถวที่ 3 ได้”; } //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>

  20. mysql_db_query • ใช้ส่งคำสั่งไปยัง MySQL เหมือนกับฟังก์ชัน mysql_query() แต่สามารถกำหนดฐานข้อมูลที่ต้องการจะติดต่อได้ รูปแบบคำสั่ง - databasename ชื่อฐานข้อมูล - query คำสั่ง SQL - link_identifier ตัวแปรที่ใช้ติดต่อระบบฐานข้อมูลของ MySQL intmysql_db_query(string databasename, string query, intlink_identifier);

  21. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”,”seree”,”phpseree”); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = “select id,name,surname from phpuser”; //ส่งคำสั่งไปทำงานที่ฐานข้อมูล test_db ของ MySQL //ไม่ต้องใช้ฟังก์ชัน mysql_select_db() $result = mysql_db_query(“test_db”,$query,$link);

  22. mysql_drop_db • เป็นฟังก์ชันที่ใช้ลบ(drop) ฐานข้อมูลออกจากระบบฐานข้อมูลของ MySQL รูปแบบของคำสั่ง - databasename ชื่อฐานข้อมูล - link_identifier ตัวแปรที่ใช้ติดต่อระบบฐานข้อมูลของ MySQL intmysql_drop_db(string databasename, intlink_identifier);

  23. mysql_fetch_array • ใช้อ่านค่าของข้อมูลจากการใช้คำสั่ง SELECT ของฟังก์ชัน mysql_query หรือ mysql_db_query ให้อยู่ในรูปของตัวแปรอาร์เรย์ • mysql_fetch_array สามารถกำหนดดัชนีได้ทั้งแบบ ซื่อคอลัมน์ และเลขลำดับของคอลัมน์ รูปแบบของคำสั่ง array mysql_fetch_array (int result);

  24. mysql_fetch_field • เป็นฟังก์ชันที่ใช้อ่านรายละเอียดของคอลัมน์ซึ่งจะเก็บอยู่ในรูปของออปเจค(object) รูปแบบของคำสั่ง array mysql_fetch_field (int result,[int field]);

  25. mysql_fetch_object • ทำงานเหมือนกับฟังก์ชัน mysql_fetch_array() และ mysql_fetch_row() แต่แตกต่างกันที่ค่าคืนกลับมานั้นเป็นออบเจค (object) แทนที่จะเป็นอาร์เรย์เหมือนกับฟังก์ชันทั้งสอง รูปแบบของคำสั่ง object mysql_fetch_object(int result);

  26. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ Mysql $link = mysql_connect("localhost","seree",""); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db("test_db",$link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = "select * from phpuser"; //ส่งคำสั่งไปทำงานที่ระบบฐานข้อมูลของ Mysql $result = mysql_query($query,$link); //อ่านข้อมูลมาเก็บไว้ที่ object while ($object =mysql_fetch_object($result)){ echo $object ->id." "; echo $object ->name." "; echo $object ->surname."<BR> "; } //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>

  27. mysql_fetch_row • ทำงานเหมือนกับฟังก์ชัน mysql_fetch_array() แต่ดัชนีที่ใช้กำหนดข้อมูลในอาร์เรย์นั้นต้องเป็นเลขลำดับของคอลัมน์เท่านั้นไม่สามารถใช้ดัชนีเป็นชื่อของคอลัมน์ได้เหมือนกับฟังก์ชัน mysql_fetch_array() รูปแบบของคำสั่ง array mysql_fetch_row(int result);

  28. mysql_filed_name • เป็นฟังก์ชันที่ใช้อ่านชื่อคอลัมน์ รูปแบบของคำสั่ง String mysql_field_name(int result , int field);

  29. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ Mysql $link = mysql_connect(“localhost”,”seree”,”phpseree”); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db(“test_db”,$link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = “select * form phpuser”; //ส่งคำสั่งไปทำงานที่ระบบฐานข้อมูลของ Mysql $result = mysql_query($query,$link); //หาจำนวนของคอลัมน์ $numfield = mysql_num_fields($result); //แสดงชื่อของคอลัมน์

  30. ตัวอย่าง(ต่อ) for(){ echo “คอลัมน์ $index ชื่อ ”.mysql_field_name($result,$index),”<br>”; } //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>

  31. mysql_free_result • เป็นฟังก์ชันที่ใช้ในการคืนหน่วยความจำ(memory)ใช้ในการเก็บข้อมูล ชั่วคราวเมื่อเรียกใช้ฟังก์ชัน (mysql_db_query)หรือ(mysql_queryซึ่งจะทำให้หน่วยความจำของระบบเพิ่มขึ้น รูปแบบของคำสั่ง int mysql_free_result(int result);

  32. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”,”seree”,”phpseree”); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db(“test_db”,$link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = “select id, name, surname from phpuser”; //ส่งคำสั่งไปทำงานที่ระบบฐานข้อมูลของ MySQL

  33. ตัวอย่าง(ต่อ) //ข้อมูลที่ถูกส่งกลับจะถูกเก็บไว้ที่ $result // $result มีการใช้หน่วยความจำเพื่อเก็บรักษาข้อมูลที่ฐานข้อมูลส่งกลับมาให้ $result=mysql_query($query,$link); //คืนหน่วยความจำที่ถือครองโดย $result ให้กับระบบ $chk = mysql_free_result($result); if($chk) { echo “คืนหน่วยจำที่ใช้โดย \$result แล้ว ”; }else {

  34. ตัวอย่าง(ต่อ) echo “ไม่สามารถคืนหน่วยจำของ \$result ได้”; } //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>

  35. mysql_num_rows • เป็นฟังก์ชันที่ใช้นับจำนวนแถวของข้อมูลที่ถูกส่งมาเมื่อใช้คำสั่ง SELECT ในการอ่านค่าของข้อมูลจากฐานข้อมูล รูปแบบของคำสั่ง int mysql_num_rows( int result);

  36. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”,”seree”,”phpseree”); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db(“test_db”, $link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = “select * from phpuser”; //ส่งคำสั่งไปทำที่ระบบฐานข้อมูลของ MySQL $result = mysql_query($query,$link); echo “จำนวนรายการข้อมูลที่ส่งมา :”.mysql_num_rows($result); //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>

  37. mysql_pconnect • การทำงานของฟังก์ชันนี้เหมือนกับฟังก์ชัน mysql_connect() แต่มีสองอย่างที่ทำให้ฟังก์ชันนี้แตกต่างไปจากฟังก์ชัน mysql_connect() 1. เมื่อมีการติดต่อกับระบบฐานข้อมูลด้วยฟังก์ชัน mysql_pconnect() ในครั้งต่อไปถ้ามีการกำหนด hostname, username และ password เหมือนกับครั้งแรกที่ติดต่ออยู่ก็จะไม่มีการสร้างการติดต่อ(connection) ขึ้นมาใหม่แต่จะใช้การติดต่อเดิมในครั้งแรก 2. มีการติดต่อด้วยฟังก์ชัน mysql_pconnect()เป็นการสร้างการติดต่อแบบถาวรหมายความว่า เมื่อจบโปรแกรมหรือมีการเรียกใช้ function mysql_close() สถานะการติดต่อกับฐานข้อมูลนั้นก็ยังดำรงอยู่จนกว่าจะมีการ Restart MySQL ใหม่อีกครั้ง

  38. mysql_query • เป็นฟังก์ชันที่ใช้ส่งคำสั่ง(SELECT, INSERT, DELETE)ไปทำงานที่ระบบฐานข้อมูลของ MySQL ซึ่งการทำงานจะเหมือนกับ function mysql_db_query() รูปแบบของคำสั่ง int mysql_query(string query, Int link_identifier);

  39. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”, “root”, “”); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db(“test_db”, $link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = “select * from phpuser”; //ส่งคำสั่งไปทำที่ระบบฐานข้อมูลของ MySQL $result = mysql_query($query,$link); //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>

  40. mysql_result • เป็นฟังก์ชันที่ใช้อ่านข้อมูลของคอลัมน์โดยต้องมีการระบุแถวและชื่อคอลัมน์ที่ต้องการอ่านข้อมูล รูปแบบของคำสั่ง mysql_result(int result, int row, string fieldname);

  41. ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”, “seree”, “phpseree”); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db(“test_db”, $link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = “select * from phpuser”;

  42. ตัวอย่าง(ต่อ) //ส่งคำสั่งไปทำที่ระบบฐานข้อมูลของ MySQL $result = mysql_query($query,$link); //หาจำนวนรายการของข้อมูล $numrow = mysql_num_row($result); //แสดงค่าข้อมูลของคอลัมน์แรก for($indx=0; $index<$numrow; $index++){ echo “คอลัมน์ :”.mysql_field_name($result,0); echo ” ข้อมูลที่เก็บ : “.mysql_result($result,$index,”id”).”<br>”; //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>

  43. mysql_select_db • เป็นฟังก์ชันที่ใช้ในการเลือกหรือเปลี่ยนการเข้าไปใช้ข้อมูลในฐานข้อมูลนั้น รูปแบบของคำสั่ง int mysql_select_db(string fidatabasename, int link_identifier);

  44. <?php $host = "localhost"; $un = "root"; $pwd = ""; $Myconn = mysql_connect($host,$un,$pwd); if($Myconn) { echo "ติดต่อฐานข้อมูลได้"; $StrSQL = "Select * From TbMember Where UserName ='" . $TxtUN . "' and Password = '" . $TxtPWD . "'"; $result =mysql_db_query("CarDB",$StrSQL,$Myconn); $totalrow = mysql_num_rows($result); if($totalrow !=0) { echo "<br>เข้าสู่ระบบแล้ว<br>"; echo "$TxtUN<br>$TxtPWD "; } else { echo "<br>ไม่สามารถ เข้าสู่ระบบได้"; } } else { echo "ไม่สามารถติดต่อฐานข้อมูลได้"; } ?>

  45. <html><body><form name="form1" method="post" action=“register_result.php">สมัครสมาชิก<br><table width="27%" border="0" cellspacing="0" cellpadding="0" height="27"><tr> <td>User-Name</td><td> <input type="text" name="user"></td></tr><tr><td>password</td><td><input type="password" name="pass"></td></tr><tr> <td>name</td><td> <input type="text" name="name"></td></tr><tr> <td>email</td><td> <input type="text" name="email"></td></tr><tr> <td>address</td><td> <input type="text" name="address"></td></tr><tr> <td>&nbsp;</td><td> <input type="submit" name="Submit" value="Ok"></td></tr></table></form></body></html> register.php

  46. <? $host="localhost"; $username="root"; $pass_word="123456"; $db="db_customer"; $tb="member"; mysql_connect( $host,$username,$pass_word) or die ("ติดต่อกับฐานข้อมูล Mysql ไม่ได้ "); mysql_select_db($db) or die("เลือกฐานข้อมูลไม่ได้"); $md5pass=md5($pass); mysql_query("INSERT INTO $tb (id, user, pass, name, email, address) values('', '$user','$md5pass', '$name ', '$email', '$address')") or die ("ไม่สามารถเพิ่มข้อมูลได้ "); echo "สวัสดีครับคุณ $name <br> "; echo "user คุณคือ $user <br> "; echo "รหัสผ่านคือ $pass <br> "; echo "รหัสผ่านที่ได้จาก md5 คือ ",md5($pass); mysql_close(); ?> <br> <a href=“login.php">คลิกเพื่อเข้าสู่ระบบ</a> register_result.php

  47. Quiz (page 1) login.php Password : เข้ารหัสแบบ MD5

  48. Quiz (page 2) user.php logout.php USER ออกจากระบบเรียบร้อย • ภายใน logout.php • ล้าง session ทั้งหมด (session_unregister) • ปิดการเชื่อมต่อ ฐานข้อมูล

More Related