480 likes | 586 Views
Personal Home Page Hypertext Preprocessor. PHP-2. LESSON 3: PHP กับการเชื่อมต่อฐานข้อมูล MySQL. การส่งข้อมูลด้วย Html Form การส่งข้อมูลด้วย Querystring การเก็บค่าและส่งค่าโดยใช้ Session Object การเก็บค่าและส่งค่าโดยใช้ Cookie Object ตัวแปร Global function.
E N D
Personal Home PageHypertext Preprocessor PHP-2 LESSON 3: PHP กับการเชื่อมต่อฐานข้อมูล MySQL การส่งข้อมูลด้วย Html Form การส่งข้อมูลด้วย Querystring การเก็บค่าและส่งค่าโดยใช้ Session Object การเก็บค่าและส่งค่าโดยใช้ Cookie Object ตัวแปร Global function ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร
การสร้างฐานข้อมูลใหม่การสร้างฐานข้อมูลใหม่ หลังจากล็อกอินเข้าใช้งาน phpMyAdmin แล้ว หากต้องการสร้างฐานข้อมูลให้พิมพ์ชื่อฐานข้อมูลที่ต้องการในช่องสร้างฐานข้อมูลใหม่แล้วคลิก “สร้าง” การใช้งาน phpMyAdmin
การสร้างตารางในฐานข้อมูลการสร้างตารางในฐานข้อมูล หลังจากสร้างฐานข้อมูลแล้วหากต้องการสร้างตารางให้พิมพ์ชื่อตารางที่ต้องการและระบุจำนวนฟิลด์ในตารางที่จะสร้าง จากนั้นคลิก “ลงมือ” หลังจากนั้นให้กรอกข้อมูลของแต่ละฟิลด์แล้วคลิก “บันทึก” การใช้งาน phpMyAdmin
การสร้างตารางในฐานข้อมูลการสร้างตารางในฐานข้อมูล ระบบจะทำการสร้างตารางใหม่ให้อีกทั้งยังสร้าง คำค้น SQL ให้ด้วย การใช้งาน phpMyAdmin
การแก้ไขตารางในฐานข้อมูลการแก้ไขตารางในฐานข้อมูล หากต้องการ แก้ไขข้อมูล ของแต่ละฟิลด์ ให้คลิกปุ่ม หากต้องการลบฟิลด์ให้คลิกปุ่ม การใช้งาน phpMyAdmin หากต้องการเพิ่มฟิลด์ใหม่ให้ระบุ จำนวนฟิลด์ที่ต้องการ และ ตำแหน่งที่ต้องการเพิ่ม จากนั้นคลิก “ลงมือ”
ทดลองสร้างฐานข้อมูล ฐานข้อมูล : 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;
MySQL DATABASE FUNCTION MySQL เป็นระบบฐานข้อมูลที่ใช้งานร่วมกับ PHP หาใช้ได้ง่ายระบบมีประสิทธิ์ภาพสูงและเป็นแบบ RDBMS(ralational database management system) ระบบฐานข้อมูลที่ PHP สามารถเชื่อมต่อได้ OracleSybase mSQL MySQL Solid ODBC PostgreSQLAdabas D FilePro Velocis Informix dBase Unix dbm
คำสั่ง SQL เบื้องต้น • คำสั่ง SQL (structure query language) เป็นคำสั่งที่ใช้ในการติดต่อกับระบบฐานข้อมูล เพื่อ • อ่านข้อมูล • แก้ไขข้อมูล • เพิ่มข้อมูล • การลบข้อมูล
คำสั่ง 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] ]
คำสั่ง 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>] }
คำสั่ง 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 } }
คำสั่ง SQL ? (ต่อ) คำสั่งที่ใช้ลบข้อมูล DELETE [FROM] { table_name WITH ( <table_hint_limited> […n] ) | view_name |rowset_function_limited } [FROM {<table_source>} […n] ] [WHERE <search_condition> ]
ฟังก์ชันที่ใช้ติดต่อ 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 กำหนดพอยเตอร์ชี้ไปยังฟิวส์
ฟังก์ชันที่ใช้ติดต่อ 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 แสดงชื่อตาราง
mysql_connect • เป็นฟังก์ชันที่ใช้ในการติดต่อกับระบบฐานข้อมูลของ MySQL รูปแบบของคำสั่ง int mysql_connect(string hostname, string username, string password) ; hostname คือเครื่องที่ติดตั้งระบบฐานข้อมูลของ MySQL username คือ ซื่อของผู้ใช้ที่มีสิทธิ์เข้าใช้ระบบฐานข้อมูลของ MySQL password คือ รหัสผ่านของ username
mysql_close • เป็นฟังก์ชันที่ใช้ยกเลิกการติดต่อกับระบบฐานข้อมูล รูปแบบของคำสั่ง int mysql_close(int link_identifier); link_identifier
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”,”root”,”1234”); if($link) { echo “ติดต่อระบบฐานข้อมูลของ MySQL ได้สำเร็จ<br>”; } else { echo “ไม่สามารถติดต่อระบบฐานข้อมูลของ MySQL ได้<br>”; } if ($link) { //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); echo “ยกเลิกการติดต่อกับระบบฐานข้อมูลแล้ว”; } ?>
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ 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);
ตัวอย่าง(ต่อ) if ($chk) { //อ่านข้อมูลของแถวที่ 3 $data = mysql_fetch_row($result); echo “รหัส $data[0] ของ $data[1] $data[2]”; } else { echo “ไม่สามารถอ่านข้อมูลแถวที่ 3 ได้”; } //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>
mysql_db_query • ใช้ส่งคำสั่งไปยัง MySQL เหมือนกับฟังก์ชัน mysql_query() แต่สามารถกำหนดฐานข้อมูลที่ต้องการจะติดต่อได้ รูปแบบคำสั่ง - databasename ชื่อฐานข้อมูล - query คำสั่ง SQL - link_identifier ตัวแปรที่ใช้ติดต่อระบบฐานข้อมูลของ MySQL intmysql_db_query(string databasename, string query, intlink_identifier);
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ 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);
mysql_drop_db • เป็นฟังก์ชันที่ใช้ลบ(drop) ฐานข้อมูลออกจากระบบฐานข้อมูลของ MySQL รูปแบบของคำสั่ง - databasename ชื่อฐานข้อมูล - link_identifier ตัวแปรที่ใช้ติดต่อระบบฐานข้อมูลของ MySQL intmysql_drop_db(string databasename, intlink_identifier);
mysql_fetch_array • ใช้อ่านค่าของข้อมูลจากการใช้คำสั่ง SELECT ของฟังก์ชัน mysql_query หรือ mysql_db_query ให้อยู่ในรูปของตัวแปรอาร์เรย์ • mysql_fetch_array สามารถกำหนดดัชนีได้ทั้งแบบ ซื่อคอลัมน์ และเลขลำดับของคอลัมน์ รูปแบบของคำสั่ง array mysql_fetch_array (int result);
mysql_fetch_field • เป็นฟังก์ชันที่ใช้อ่านรายละเอียดของคอลัมน์ซึ่งจะเก็บอยู่ในรูปของออปเจค(object) รูปแบบของคำสั่ง array mysql_fetch_field (int result,[int field]);
mysql_fetch_object • ทำงานเหมือนกับฟังก์ชัน mysql_fetch_array() และ mysql_fetch_row() แต่แตกต่างกันที่ค่าคืนกลับมานั้นเป็นออบเจค (object) แทนที่จะเป็นอาร์เรย์เหมือนกับฟังก์ชันทั้งสอง รูปแบบของคำสั่ง object mysql_fetch_object(int result);
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ 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); ?>
mysql_fetch_row • ทำงานเหมือนกับฟังก์ชัน mysql_fetch_array() แต่ดัชนีที่ใช้กำหนดข้อมูลในอาร์เรย์นั้นต้องเป็นเลขลำดับของคอลัมน์เท่านั้นไม่สามารถใช้ดัชนีเป็นชื่อของคอลัมน์ได้เหมือนกับฟังก์ชัน mysql_fetch_array() รูปแบบของคำสั่ง array mysql_fetch_row(int result);
mysql_filed_name • เป็นฟังก์ชันที่ใช้อ่านชื่อคอลัมน์ รูปแบบของคำสั่ง String mysql_field_name(int result , int field);
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ 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); //แสดงชื่อของคอลัมน์
ตัวอย่าง(ต่อ) for(){ echo “คอลัมน์ $index ชื่อ ”.mysql_field_name($result,$index),”<br>”; } //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>
mysql_free_result • เป็นฟังก์ชันที่ใช้ในการคืนหน่วยความจำ(memory)ใช้ในการเก็บข้อมูล ชั่วคราวเมื่อเรียกใช้ฟังก์ชัน (mysql_db_query)หรือ(mysql_queryซึ่งจะทำให้หน่วยความจำของระบบเพิ่มขึ้น รูปแบบของคำสั่ง int mysql_free_result(int result);
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”,”seree”,”phpseree”); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db(“test_db”,$link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = “select id, name, surname from phpuser”; //ส่งคำสั่งไปทำงานที่ระบบฐานข้อมูลของ MySQL
ตัวอย่าง(ต่อ) //ข้อมูลที่ถูกส่งกลับจะถูกเก็บไว้ที่ $result // $result มีการใช้หน่วยความจำเพื่อเก็บรักษาข้อมูลที่ฐานข้อมูลส่งกลับมาให้ $result=mysql_query($query,$link); //คืนหน่วยความจำที่ถือครองโดย $result ให้กับระบบ $chk = mysql_free_result($result); if($chk) { echo “คืนหน่วยจำที่ใช้โดย \$result แล้ว ”; }else {
ตัวอย่าง(ต่อ) echo “ไม่สามารถคืนหน่วยจำของ \$result ได้”; } //ยกเลิกการติดต่อกับระบบฐานข้อมูล mysql_close($link); ?>
mysql_num_rows • เป็นฟังก์ชันที่ใช้นับจำนวนแถวของข้อมูลที่ถูกส่งมาเมื่อใช้คำสั่ง SELECT ในการอ่านค่าของข้อมูลจากฐานข้อมูล รูปแบบของคำสั่ง int mysql_num_rows( int result);
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ 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); ?>
mysql_pconnect • การทำงานของฟังก์ชันนี้เหมือนกับฟังก์ชัน mysql_connect() แต่มีสองอย่างที่ทำให้ฟังก์ชันนี้แตกต่างไปจากฟังก์ชัน mysql_connect() 1. เมื่อมีการติดต่อกับระบบฐานข้อมูลด้วยฟังก์ชัน mysql_pconnect() ในครั้งต่อไปถ้ามีการกำหนด hostname, username และ password เหมือนกับครั้งแรกที่ติดต่ออยู่ก็จะไม่มีการสร้างการติดต่อ(connection) ขึ้นมาใหม่แต่จะใช้การติดต่อเดิมในครั้งแรก 2. มีการติดต่อด้วยฟังก์ชัน mysql_pconnect()เป็นการสร้างการติดต่อแบบถาวรหมายความว่า เมื่อจบโปรแกรมหรือมีการเรียกใช้ function mysql_close() สถานะการติดต่อกับฐานข้อมูลนั้นก็ยังดำรงอยู่จนกว่าจะมีการ Restart MySQL ใหม่อีกครั้ง
mysql_query • เป็นฟังก์ชันที่ใช้ส่งคำสั่ง(SELECT, INSERT, DELETE)ไปทำงานที่ระบบฐานข้อมูลของ MySQL ซึ่งการทำงานจะเหมือนกับ function mysql_db_query() รูปแบบของคำสั่ง int mysql_query(string query, Int link_identifier);
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ 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); ?>
mysql_result • เป็นฟังก์ชันที่ใช้อ่านข้อมูลของคอลัมน์โดยต้องมีการระบุแถวและชื่อคอลัมน์ที่ต้องการอ่านข้อมูล รูปแบบของคำสั่ง mysql_result(int result, int row, string fieldname);
ตัวอย่าง <? //ติดต่อระบบฐานข้อมูลของ MySQL $link = mysql_connect(“localhost”, “seree”, “phpseree”); //เลือกฐานข้อมูลที่ต้องการ mysql_select_db(“test_db”, $link); //กำหนดคำสั่งที่ต้องส่งไปทำงานที่ฐานข้อมูล $query = “select * from phpuser”;
ตัวอย่าง(ต่อ) //ส่งคำสั่งไปทำที่ระบบฐานข้อมูลของ 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); ?>
mysql_select_db • เป็นฟังก์ชันที่ใช้ในการเลือกหรือเปลี่ยนการเข้าไปใช้ข้อมูลในฐานข้อมูลนั้น รูปแบบของคำสั่ง int mysql_select_db(string fidatabasename, int link_identifier);
<?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 "ไม่สามารถติดต่อฐานข้อมูลได้"; } ?>
<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> </td><td> <input type="submit" name="Submit" value="Ok"></td></tr></table></form></body></html> register.php
<? $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
Quiz (page 1) login.php Password : เข้ารหัสแบบ MD5
Quiz (page 2) user.php logout.php USER ออกจากระบบเรียบร้อย • ภายใน logout.php • ล้าง session ทั้งหมด (session_unregister) • ปิดการเชื่อมต่อ ฐานข้อมูล