วิธีการสลับข้อมูล MySQL ในคอลัมน์เดียวกัน
สวัสดีครับ วันนี้ผมจะมาพูดถึงวิธีการสลับข้อมูล MySQL ในคอลัมน์เดียวกัน หรือพูดอีกอย่างนึกว่า "วิธีการสลับข้อมูล MySQL ในแถวที่ต่างกัน" ก็ได้ครับ พอพูดมาถึงตรงนี้ปั๊บ บางคนอาจจะงงว่าแถวกับคอลัมน์ คืออะไร และต่างกันยังไงอีกครับ อะเดี๋ยวไปดูเรื่องแถวกับคอลัมน์กันก่อน
แถว และ คอลัมน์ ในโปรแกรม Microsoft Excel |
ภาพจาก : http://www.korkru.com/media/excel/images/material1/material1_clip_image001.png
และนี้คือแถว (Row) และคอลัมน์ (Column)ในโปรแกรม Excel นะครับ ซึ่งก็จะเห็นได้ว่าแถวจะเป็นการแสดงข้อมูลแนวนอน และคอลัมน์จะเป็นการแสดงข้อมูลในแนวตั้งครับ ง่ายๆแค่นี้เอง
ที่นี่เข้าเรื่องกันดีกว่าครับ สิ่งที่ผมจะพูดถึงในบทความนี้ก็คือ ผมต้องการจะสลับข้อมูล "EE" และ "10" จากแถวที่ 1 กับข้อมูล "FF" และ "30" จากแถวที่ 3 ผมว่าทุกคนคงเข้าใจเนอะ หรือบางภาษาชาวบ้านเรียกว่าแลกข้อมูลก็ได้ เด่วมีภาพให้ดูครับ
$con = mysqli_connect("localhost","root","","test");
ก่อนจะเขียนโค้ดจริงๆ จังๆ วิธีการสลับข้อมูล MySQL เราก็ต้องมาเริ่มประกาศคำสั่ง mysqli_connect กันก่อนครับ โดยคำสั่งนี้เป็นคำสั่งในการเชื่อมต่อกับเว็บเซอวิส (WebService) ของเรานะครับ ซึ่งถ้าใช้ฐานข้อมูลในเครื่องก็จะเป็น Localhost ตามด้วย Username , Password , Host Name ตามลำดับนะครับ แต่ก็ขึ้นอยู่กับคำสั่งด้วย บางคำสั่งก็อาจจะไม่ได้ประกาศแบบนี้
mysqli_set_charset($con,"utf8");
จากนั้นบรรทัดต่อไปทำการประกาศ mysqli_set_charset ตามภาพนะครับ และทำการกำหนดค่าเป็น $con กับ "utf8" ตามภาพเพื่อเลือก Query ที่ $con ตามคำสั่ง mysqli_connect ข้างบน ส่วน utf8 เพื่อทำการเข้ารหัสให้ออกมาเป็นภาษาไทย
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
ต่อมาผมใช้คำสั่งดักจับ if (mysqli_connect_errno($con)) บอกว่าถ้า MySQL นั้น Error จากตัวแปร $con นั้นคุณจะให้มันทำอะไรต่อ ซึ่งผมนั้นก็ใช้คำสั่ง echo "Failed to connect to MySQL: " เพื่อแสดงข้อความ "Failed to connect to MySQL:" ออกมาครับ แล้วในเมื่อเชื่อมต่อไม่ได้มันก็มาจบที่คำสั่ง mysqli_close($con); แล้วก็จบกระบวนการไปเอง
แล้วนี่คือโค้ด (Code) จากบนทั้งหมด
$con=mysqli_connect("localhost","root","","test");
mysqli_set_charset($con,"utf8");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_set_charset($con,"utf8");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
ต่อมาจะเข้ามาถึงกระบวนการทำงานของโค้ดจริงๆ แล้วนะครับ โดยที่ก่อนอื่นต้องกำหนดตัวแปรออกมาก่อน โดยที่ผมกำหนดตัวแปรออกมา 2 ตัว เสมือนกับว่าผมรับค่าจากโปรแกรมมา 2 ค่าด้วยกัน ได้แก่ $h1 = "1"; และ $h2 = "4"; ก็คือ rule_id ที่ 1 กับ rule_id ที่ 4 นั้นเอง เพราะว่าเรานั้นต้องการจะแลกข้อมูลใน rule_id ของ 2 ค่านี้นั้นเองครับ
$h1 = "1";
$h2 = "4";
$h2 = "4";
หรือบางคนที่รับค่า Post มาก็ให้ประกาศแบบนี้นะครับ $h1 = $_POST["ตัวแปรที่คุณตั้ง"]; และ $h2
$h1 = $_POST["ตัวแปรที่คุณตั้ง"];
$h2 = $_POST["ตัวแปรที่คุณตั้ง"];
$h2 = $_POST["ตัวแปรที่คุณตั้ง"];
จากนั้นเราก็จะใช้โค้ด (Code) ในการสลับข้อมูลนั้นก็คือ
$a1 = "UPDATE rules a INNER JOIN rules b
ON a.rule_id <> b.rule_id
SET a.rule_name = b.rule_name, a.priority = b.priority
WHERE a.rule_id IN (1,4) AND b.rule_id IN (1,4)";
ON a.rule_id <> b.rule_id
SET a.rule_name = b.rule_name, a.priority = b.priority
WHERE a.rule_id IN (1,4) AND b.rule_id IN (1,4)";
จากโค้ดด้านบนเรากำหนดตัวแปร $a1 ขึ้นเพื่อเตรียมทำการ Query ไว้ โดยข้างในจะใช้คำสั่ง Update และ Inner Join ในการเชื่อม กำหนด rules a และ rules b ไว้เพื่อแทนตำแหน่งที่ 1 และ 4
ต่อไปถ้าเราต้องให้สลับกับอันไหนก็กำหนดไปเลยครับ อย่างตัวอย่างต้องการสลับที่ rule_name ก็ใส่หลัง SET เป็น a.rule_name = b.rule_name ตามด้วย a.priority = b.priority ตามลำดับ เพราะว่าเราต้องการแลกทั้ง rule_name และ priority
ต่อไปก็สั่งให้ทำการประมวลผลโดยใช้ mysqli_query($con,$a1); แค่นี้จบ ง่ายป่ะล่ะ
mysqli_query($con,$a1);
และนี้คือโค้ด (Code) ทั้งหมด ตอนจบอย่าลืมปิดด้วย mysqli_close($con); นะ
<?php
$con=mysqli_connect("localhost","root","","test");
mysqli_set_charset($con,"utf8");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$con=mysqli_connect("localhost","root","","test");
mysqli_set_charset($con,"utf8");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$h1 = "1";
$h2 = "4";
$a1 = "UPDATE rules a INNER JOIN rules b ON a.rule_id <> b.rule_id SET a.rule_name = b.rule_name, a.priority = b.priority WHERE a.rule_id IN (1,4) AND b.rule_id IN (1,4)";
mysqli_query($con,$a1);
mysqli_query($con,$a1);
mysqli_close($con);
?>
?>
เสร็จแล้วพอเรากดที่ไฟล์นี้ปั๊บ ข้อมูลก็จะทำการสลับที่กันเรียบร้อยครับ ตามภาพด้านล่างเลย (โค้ดของคุณไม่ผิดพลาดนะ)
จบไปแล้วนะครับสำหรับวิธีการสลับข้อมูล MySQL ในคอลัมน์เดียวกัน ต่อไปเด่วจะทำบทความวิธีการสลับข้อมูล MySQL ในแถวเดียวกันมั้ง ซึ่งจริงๆ ก็ไม่ต่างอะไรกันเลยครับ แก้ไขนิดเดียวก็สามารถใช้งานได้เหมือนกัน ยังผู้ชมคนไหนสามารถทำได้แล้วก็มาคอมเม้นบอกกันหน่อยนะครับ อย่าลืมไปแวะดูโปรเจคแอนดรอยด์ของเรานะครับ ไปละ
ความคิดเห็น