21 กันยายน 2564

การเขียนโปรแกรมเพื่อติดต่อฐานข้อมูล

 

การเขียนโปรแกรมเพื่อติดต่อฐานข้อมูล

การเขียนโปรแกรมเพื่อติดต่อฐานข้อมูล เป็นการเขียนโปรแกรมในขั้นต้น เพื่อกระทำการสิ่งต่อไปนี้กับฐานข้อมูล เช่น การบันทึกข้อมูลจากฟอร์มเข้าสู่ตารางข้อมูล การนำข้อมูลจากตารางมาแสดงให้ผู้ใช้ได้เห็น การแก้ไขหรือปรับปรุงข้อมูล การลบข้อมูล และการเอาข้อมูลมาประมวลผล บวก ลบ คูณ หาร และนับ ค่าที่เป็นตัวเลขในคอลัมน์ มาหาข้อสรุป รายงาน หรือทำเป็นกราฟ เพื่อใช้ในการตัดสินใจ เป็นต้น

ทุก ๆ ระบบฐานข้อมูลจะมีกฏเรื่องความปลอดภัยการเข้าถึงข้อมูลเอาไว้ ซึ่งปกติแล้ว 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");

}


?>


สิ่งจำเป็นที่เราต้องรู้ในกรณีที่เขียนโปรแกรมติดต่อกับฐานข้อมูล นั้นก็คือ

  • username
  • password
  • database name
  • ip หรือ ชื่อเครื่อง Server ในกรณีที่เป็นเครื่องเดียวกันระหว่างโปรแกรมภาษา php กับฐานข้อมูล เราจะสามารถใช้ชื่อเครื่องว่า "localhost" หรือ "127.0.0.1" ได้
ดังนั้น

       ถ้าหากเราเขียนโปรแกรมถูกต้อง สามารถเชื่อมต่อฐานข้อมูลได้ โปรแกรมนี้ จะมีข้อความว่า "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 ก็สามารถแก้ไขได้ โดยการทำด้วยวิธีเดียวกัน 


กิจกรรม

  • ให้นักศึกษานำตัวอย่างจากแบบทดสอบ 0.5 ทดสอบ SQL เบื้องต้น ดาวน์โหลด practice.sql มาสร้างฐานข้อมูลในเครื่องที่นักศึกษาทำงาน
  • ให้เขียนคำสั่งเพื่อติดต่อฐานข้อมูล ตามตัวอย่างด้านบน ให้แสดงผลข้อมูลตาราง พนักงาน (emp) โดยเขียนคำสั่งต่อไปนี้ต่อท้าย (ก่อนปิด } ของ else)

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"];
    }


  • ให้นักศึกษาเขียนคำสั่งเพื่อแสดงผล ตำแหน่ง (job) วันที่เริ่มทำงาน (hiredate) เงินเดือน (sal) และค่าคอมมิชชั่น (comm) เพิ่มเติมในโปรแกรมเดิม
  • ให้นักศึกษาจัดทำให้แสดงผลในรูปตารางให้สวยงาม ในโปรแกรมเดิม

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

ให้ MS-Word ช่วยเปลี่ยนเสียงเป็นข้อความ

  Microsoft word สามารถช่วยเปลี่ยนเสียงเป็นข้อความได้ ทำให้ช่วยลดเวลาในการฟังแล้วพิมพ์เป็นข้อความ ซึ่งมีวิธีการทำง่ายๆ เตรียมไฟล์เสียงที...