การเขียนโปรแกรมเพื่อติดต่อฐานข้อมูล
การเขียนโปรแกรมเพื่อติดต่อฐานข้อมูล เป็นการเขียนโปรแกรมในขั้นต้น เพื่อกระทำการสิ่งต่อไปนี้กับฐานข้อมูล เช่น การบันทึกข้อมูลจากฟอร์มเข้าสู่ตารางข้อมูล การนำข้อมูลจากตารางมาแสดงให้ผู้ใช้ได้เห็น การแก้ไขหรือปรับปรุงข้อมูล การลบข้อมูล และการเอาข้อมูลมาประมวลผล บวก ลบ คูณ หาร และนับ ค่าที่เป็นตัวเลขในคอลัมน์ มาหาข้อสรุป รายงาน หรือทำเป็นกราฟ เพื่อใช้ในการตัดสินใจ เป็นต้น ทุก ๆ ระบบฐานข้อมูลจะมีกฏเรื่องความปลอดภัยการเข้าถึงข้อมูลเอาไว้ ซึ่งปกติแล้ว Database administrator หรือเจ้าของเครื่อง Database Server จะกุมความลับเอาไว้เพียงผู้เดียว ความลับนั้นก็คือ ชื่อผู้ใช้ที่เป็น root หรือ su กับ password ดังนั้น หาก admin จะมอบสิทธิ์ในการเข้าถึงข้อมูล ก็จะเขียนคำสั่ง add user ให้กับโปรแกรมเมอร์พร้อมกับรหัสผ่าน แล้วคำสั่ง grant เพื่อมอบสิทธิ์ให้เราทำอะไรได้บ้างในเรื่องการสร้างฐานข้อมูล ในตอนนี้ จะได้นำเอาการเขียนคำสั่งเพื่อการเชื่อมต่อฐานข้อมูลด้วยภาษา php และใช้ฐานข้อมูล MySQL มาเป็นตัวอย่าง แต่หากเป็นภาษาหรือระบบฐานข้อมูลอื่น ๆ ก็มีหลักการเช่นเดียวกัน คือ จะต้องรู้ ip หรือชื่อเครื่อง Server และ username และ password ที่ admin กำหนดมาให้ ตัวอย่างที่ 1 กรณีเราเป็น database admin เสียเอง และเครื่อง Server เป็นเครื่องที่เราติดตั้ง OS และ Database เอง เราจะใช้คำสั่ง ดังนี้ Source code<?php $server = "localhost"; $dbname = "your_database_name"; $username = "root"; $password = "your_password_xxxxx"; $conn = @mysql_connect($server, $username, $password); if (!$conn) { die('Could not connect: ' . mysql_error()); }else{ echo "connect successful"; mysql_select_db('$dbname', $conn); mysql_db_query("$dbname", "SET NAMES utf8"); } ?> สิ่งจำเป็นที่เราต้องรู้ในกรณีที่เขียนโปรแกรมติดต่อกับฐานข้อมูล นั้นก็คือ
ดังนั้น ถ้าหากเราเขียนโปรแกรมถูกต้อง สามารถเชื่อมต่อฐานข้อมูลได้ โปรแกรมนี้ จะมีข้อความว่า "connect successful" ในทางกลับกัน หากโปรแกรมมีข้อผิดพลาดไม่ว่าจะเป็นพิมพ์ Source code ผิด หรือ กำหนดชื่อเครื่อง หรือ username หรือ password ผิดเพียงตัวใดตัวหนึ่งก็จะทำให้การติดต่อฐานข้อมูลไม่ได้ พร้อมกับแสดงข้อความ "Could not connect: " + ข้อความปัญหาของการเชื่อมต่อ เมื่อเกิดปัญหาก็ขอให้พิจารณาตรวจสอบข้อผิดพลาดอย่างละเอียด แล้วแก้ไขใหม่ ตัวอย่างที่ 2 ในกรณีที่ต้องการเชื่อมต่อด้วยการระบุ Port ซึ่ง MySQL จะกำหนดพอร์ตค่าเริ่มต้นไว้ที่ 3307 ดังนั้น จะต้องมีการระบุพอร์ต 3307 หรือพอร์ตหมายเลขอื่น ถ้าหากว่าได้กำหนดพอร์ตด้วยตัวเราเอง example 2<?php $server = "localhost:3307"; $dbname = "your_database_name"; $username = "root"; $password = "your_password_xxxxx"; $conn = @mysql_connect($server, $username, $password); if (!$conn) { die('Could not connect: ' . mysql_error()); }else{ echo "connect successful"; mysql_select_db('$dbname', $conn); mysql_db_query("$dbname", "SET NAMES utf8"); } ?> ตัวอย่างที่ 3. การเชื่อมต่อโดยการระบุ path และที่อยู่ของไฟล์ mysql จากตัวอย่างที่ใช้ ได้ติดตั้งด้วย xampp ซึ่งตำแหน่งที่ติดตั้งของ mysql.exe อยู่ที่ c:\xampp\mysql\bin ดังนั้น จึงเขียนคำสั่งเพื่อเชื่อมต่อ Database ดังนี้ example 3 mysql socket<?php $server = ":./mysql/bin/"; $dbname = "your_database_name"; $username = "root"; $password = "your_password_xxxxx"; $conn = @mysql_connect($server, $username, $password); if (!$conn) { die('Could not connect: ' . mysql_error()); }else{ echo "connect successful"; mysql_select_db('$dbname', $conn); mysql_db_query("$dbname", "SET NAMES utf8"); } ?> ตัวอย่างที่ 4 การเชื่อมต่อผ่าน socket ของ mysql แต่ผ่าน localhost example 4<?php $server = "localhost:./mysql/bin/mysql.sock"; $dbname = "your_database_name"; $username = "root"; $password = "your_password_xxxxx"; $conn = @mysql_connect($server, $username, $password); if (!$conn) { die('Could not connect: ' . mysql_error()); }else{ echo "connect successful"; mysql_select_db('$dbname', $conn); mysql_db_query("$dbname", "SET NAMES utf8"); } ?> ตัวอย่างที่ 5 กรณีที่ใช้ฟังก์ชัน mysql_connect() แล้วเกิด error จำเป็นต้องใช้ฟังก์ชันที่เป็นของใหม่ คือ mysqli_connect() แทน แต่มีผลต่อฟังก์ชันอื่นตามมา ได้แก่ mysql_db_query(), และ charset utf8 ก็ไม่สามารถแสดงผลเป็นภาษาไทยออกมาได้ ดังนั้น วิธีแก้ปัญหาทั้งหมด ดังนี้ ตัวอย่างที่ 5<?php $server = "localhost"; $dbname = "your_database_name"; $username = "root"; $password = "your_password_xxxxx"; $conn = @mysqli_connect($server, $username, $password, $dbname); if (!$conn) { die('Could not connect: ' . mysqli_connect_error()); }else{ echo "connect successful"; mysqli_set_charset($conn, "utf8"); } ?> การติดตั้ง และการ Deploy งานที่พัฒนา 1. ในกรณีที่ใช้ xampp ตำแหน่ง path ที่เราจะต้องนำไฟล์ของเราไปเก็บ จะต้องเป็นไปตามการ config ของ Apache ที่ไฟล์ httpd.conf ซึ่ง xampp ได้กำหนดให้อยู่ที่ c:\xampp\htdocs ดังนั้น เราต้องไปสร้าง folder เป็นรหัสของ นศ. เอง เอาไว้ภายใน htdocs สมมติว่า รหัส 564235010 และเราตั้งชื่อไฟล์นี้ว่า testconn.php ดังนั้น จะได้ที่อยู่ของไฟล์งานของเรา ดังนี้ c:\xampp\htdocs\564235010\testconn.php เมื่อต้องการทดสอบการทำงาน ให้ใช้ browser เปิดที่ url ดังนี้ http://127.0.0.1:8080/564235010/testconn.php 2. ในกรณีที่ใช้ AppServ ตำแหน่ง path ที่เราจะต้องนำไฟล์ของเราไปเก็บ จะต้องเป็นไปตามการ config ของ Apache ที่ไฟล์ httpd.conf ซึ่ง AppServ ได้กำหนดให้อยู่ที่ c:\AppServ\www ดังนั้น เราต้องไปสร้าง folder เป็นรหัสของ นศ. เอง เอาไว้ภายใน www สมมติว่า รหัส 564235010 และเราตั้งชื่อไฟล์นี้ว่า testconn.php ดังนั้น จะได้ที่อยู่ของไฟล์งานของเรา ดังนี้ c:\AppServ\www\564235010\testconn.php เมื่อต้องการทดสอบการทำงาน ให้ใช้ browser เปิดที่ url ดังนี้ http://127.0.0.1/564235010/testconn.php 3. ในกรณีที่เราจะกำหนด path ที่อยู่ของไฟล์ด้วยตัวเราเอง เนื่องจากการกำหนด path ที่อยู่ web application ของเราอยู่ในไฟล์ httpd.conf ดังนั้น เราจึงไปแก้ไขไฟล์นั้น มีลำดับการแก้ไขดังนี้ 1. เปิดไฟล์ c:\xampp\apache\conf\httpd.conf 2. ค้นหาคำว่า DocumentRoot 3. แก้ไขที่อยู่ของไฟล์เดิม คือ "C:/xampp/htdocs" เป็นที่อื่นตามต้องการ 4. แก้ไขบรรทัดด้านล่างถัดมา คือ <Directory "C:/xampp/htdocs"> ให้เหมือนกับข้อ 3 5. Save 6. Restart Apache ในกรณีของ AppServ ก็สามารถแก้ไขได้ โดยการทำด้วยวิธีเดียวกัน กิจกรรม
Source code$sql = "select * from emp"; $result = mysql_query($sql); $rows = mysql_num_rows($result); for ($i = 0; $i < $rows; $i++) { mysql_data_seek($result, $i); $data[$i] = mysql_fetch_array($result); echo "<br>".$data[$i]["EMPNO"]." ".$data[$i]["ENAME"]; }
|