ก่อนอื่นต้องทำการเชื่อมต่อฐานข้อมูล ถ้ายังทำไม่เป็นคลิกอ่านก่อนเลย PHP connect SQL
ตัวอย่างตาราง
โดยปกติแล้ว เมื่อเราทำการ Query ข้อมูลมาจากฐานข้อมูล หากว่า Collation ของ Field ในฐานข้อมูลเป็น "utf8_general_ci" เหมือนในรูป เมื่อเราทำการ Query ข้อมูลออกมากจะไม่สามารถเรียงลำดับข้อมูล
ก - ฮ หรือ ฮ - ก ได้
แต่เรามีวิธีแก้ไขปัญหานี้ง่าย ๆ ด้วยคำสั่ง
CONVERT( 'field_name' USING tis620 ) ASC
ตัวอย่าง SQL สำหรับเรียงลำดับข้อมูล
ตัวอย่างการใช้งาน
SELECT
pv.`code`,
pv.name_th
FROM
config_area_province AS pv
ORDER BY
CONVERT( pv.name_th USING tis620 ) ASC
LIMIT 10
SELECT
pv.`code`,
pv.name_th
FROM
config_area_province AS pv
ORDER BY
CONVERT( pv.name_th USING tis620 ) ASC
LIMIT 10
จาก SQL ด้านบนเราจะได้ผลลัพธ์ ตามรูปนี้
Note:
จะเห็นได้ว่าเราสามารถเรียงลำดับตัวอักษรภาษาไทย รวมทั้งสระต่างๆ ของภาไทยได้อย่างถูกต้อง
$sql = "SELECT
pv.`code`,
pv.name_th
FROM
config_area_province AS pv
ORDER BY
CONVERT( pv.name_th USING tis620 ) ASC
LIMIT 10";
$result = mysqli_query($connect, $sql);
foreach ($result as $key => $detail){
echo "รหัส ".$detail['code']." ชื่อ ".$detail['name_th']."<br>";
}
pv.`code`,
pv.name_th
FROM
config_area_province AS pv
ORDER BY
CONVERT( pv.name_th USING tis620 ) ASC
LIMIT 10";
$result = mysqli_query($connect, $sql);
foreach ($result as $key => $detail){
echo "รหัส ".$detail['code']." ชื่อ ".$detail['name_th']."<br>";
}
ผลลัพธ์
รหัส 81000000 ชื่อ กระบี่
รหัส 10000000 ชื่อ กรุงเทพมหานคร
รหัส 71000000 ชื่อ กาญจนบุรี
รหัส 46000000 ชื่อ กาฬสินธุ์
รหัส 62000000 ชื่อ กำแพงเพชร
รหัส 40000000 ชื่อ ขอนแก่น
รหัส 22000000 ชื่อ จันทบุรี
รหัส 24000000 ชื่อ ฉะเชิงเทรา
รหัส 20000000 ชื่อ ชลบุรี
รหัส 18000000 ชื่อ ชัยนาท