รวมคำสั่ง MySQL ที่ใช้บ่อยสุด ช่วยให้ทำงานได้สะดวก และรวดเร็วขึ้น
การใส่ประเภทของข้อมูลที่เป็น ละติจูดและลองจิจูด (Latitude, Longitude)
แนะนำให้ระบุเป็นประเภท Decimal: 11,8
คำสั่ง SQL เปลี่ยนชื่อตาราง
RENAME TABLE `user_registers` TO `user_registers_backup`;
MySQL 5.5 ให้ส่งออกข้อมูลแบบ JSON มีวิธีเดียวที่จะฟอร์แมตข้อมูลเป็น JSON คือฟังค์ชั่น CONCAT ร่วมกับ GROUP_CONCAT
หมายเหตุ: ต้องใช้ฟังค์ชั่น IFNULL เพื่อตรวจค่าแต่ละคอลั่มท์ด้วย เพราะหากคอลั่ม์ใดมีค่าเป็น NULL จะเกิด Error ทำให้ข้อมูลทั้งจะว่างเปล่าทันที
สำหรับ MySQL v5.5 ไม่รองรับการ Query ข้อมูล JSON
ข้อจำกัด: ข้อมูลไม่เกิน 1,000 ตัวอักษร ส่วนที่เกินจะถูกตัดทิ้ง
แนะนำ: ให้ Query ข้อมูลและใช้ฟังค์ชั่น json_encode ของ PHP จะดีที่สุด
SELECT CONCAT ( '[' , GROUP_CONCAT ( CONCAT ( '{' , '"AnswerID":"' , IFNULL (Qaa.`AnswerID`, '') , '",' , '"OptionID":"' , IFNULL (Qaa.`OptionID`, '') , '",' , '"Agree":"' , IFNULL (Qaa.`Agree`, '') , '",' , '"DateCreate":"' , IFNULL (Qaa.`DateCreate`, '') , '"' , '}' ) ) , ']' ) json FROM `admin_tafdb`.`qa_useranswer` AS Qaa GROUP BY Qaa.`UserID` LIMIT 0, 1000;
ตัวอย่างผลลัพท์ข้อมูลที่ได้
หมายเหตุ:
MySQL 5.7 หรือมากกว่าจะมีฟังค์ชั่นจัดการข้อมูล JSON ในตัว หรือหากเป็น SQL Server จะมีฟังค์ FOR JSON PATH ให้ใช้
อ่านเพิ่มเติมที่: https://www.sitepoint.com/use-json-data-fields-mysql-databases/
วิธีแก้ MySQL ตัวอักษร Unicode เพี้ยนอ่านไม่ออก เช่น ??? ให้เพิ่มคำสั่งด้านล่างนี้
mysql_query("SET NAMES 'UTF8'");
MySQL วิธีแสดง Auto Increment หรือ Last index ID ของตารางข้อมูลล่าสุด มี 2 วิธีเท่านั้น
1. ใช้คำสั่ง SELECT MAX(ID) และนำไปบวก 1 เพื่อให้เราทราบ Auto increment ซึ่งเป็น Primary Key อันถัดไป บ่อยครั้งจะนำค่านี้ไปอ้างอิงฐานข้อมูลหลัก
SELECT MAX( `GpsID` ) AS GpsID FROM `gps_location` LIMIT 1 ;
2. SELECT LAST_INSERT_ID();
INSERT INTO table_name (col1, col2,...) VALUES ('val1', 'val2'...);
SELECT LAST_INSERT_ID();
วิธีใช้: เริ่มต้นด้วย include และ สร้าง Class ดังนี้
include ("mysql_inc.php");
var $mysql = new my_database;
จากนั้นนำ $mysql ไปใช้ต่อได้เลย
เช่น $mysql->mquery("SQL QUERY");
สร้างไฟล์ mysql_inc.php
if ( !defined( "DB_DATABASE_NAME" ) ) { define( "DB_DATABASE_NAME", "[ชื่อฐานข้อมูล]" ); } if ( !defined( "DB_HOST" ) ) { define( "DB_HOST", "localhost" ); } define( "DB_USER", "[USERNAME_DB]" ); define( "DB_PASSWORD", "USERNAME_PASS]" ); if ( !defined( "DB_FONT" ) ) { define( "DB_FONT", "utf8" ); } class my_database { var $Conn; function mconnect() { $this->Conn = mysql_connect( DB_HOST, DB_USER, DB_PASSWORD ); $this->setfont(); } function errstring() { return "Error: (" . mysql_errno( $this->Conn ) . ") " . mysql_error( $this->Conn ); } function mquery( $result ) { return mysql_query( $result, $this->Conn ); } function mnum_rows( $result ) { return mysql_num_rows( $result ); } function mfetch_array( $result ) { return mysql_fetch_array( $result ); } function mfetch_row( $result ) { return mysql_fetch_row( $result ); } function mfetch_asccoc( $result ) { return mysql_fetch_assoc( $result ); } function mfetch_object( $result ) { return mysql_fetch_object( $result ); } function mfree_result( $result ) { return mysql_free_result( $result ); } function mdata_seek( $result, $row_number ) { return mysql_data_seek( $result, $row_number ); } function maffected_rows() { return mysql_affected_rows( $this->Conn ); } function setfont( $front = "" ) { $front = ( $front != "" ) ? $front : DB_FONT; @mysql_query( "SET CHARACTER SET " . $front, $this->Conn ); @mysql_query( "SET NAMES '" . $front . "'", $this->Conn ); } function mselect_db() { return @mysql_select_db( DB_DATABASE_NAME, $this->Conn ); } function mclose() { return @mysql_close( $this->Conn ); } }