Thaiadmin

[Article] ทำความเข้าใจกับ MySQL 5.x, 4.x และ PHP เวอร์ชั่น 5

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ Nostalgia

  • *****
  • 3,864
  • 140
  • เพศ: ชาย
  • <= ถึงจะเป็น admin เซอๆ แต่ผมก็จน =>
    • ส่วนตัว
ทำความเข้าใจกับเครื่องหมาย
� ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
� ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??

ที่มา www.appservnetwork.com

� เวลาดึงฐานข้อมูลจาก MySQL หรือ phpMyAdmin


ปัญหานี้เป็นปัญหาจริงหรือ
� � - ไม่ใช่ปัญหาแต่ว่าผู้ใช้ปรับตัวเข้ากับเวอร์ชั่นใหม่ไม่เป็น

ถ้าไม่ใช่ปัญหาแล้วจะทำยังไงกับ MySQL 5.x , 4.1.x ที่ไม่ยอมเป็นไทย
� � - เวลา Connect Database ให้เพิ่มในส่วนของ mysql_db_query($dbname,"SET NAMES tis620");
� � � เพิ่มเข้าไปทุกครั้งมีมีการ Connect

ทำการเพิ่ม SET NAMES tis620 ไปแล้วแต่ phpMyAdmin เวลา Dump ข้อมูลมันก็ยังเป็น ????? อยู่อีก
� � - เปิด my.ini ขึ้นมาโดยกดที่ Start -> run พิมพ์ my.ini แล้วกด Enter
� � � ในส่วนของ [client] ให้เพิ่ม
� � � � � �default-character-set = tis620
� � � ในส่วนของ [mysqld] หลัง database directory ให้เพิ่ม
� � � � � �default-character-set = tis620
� � � � � �character-set-server = tis620
� � � � � �collation-server = tis620_thai_ci
� � � � � �init_connect = 'SET collation_connection = tis620_thai_ci'
� � � � � �init_connect = 'SET NAMES tis620'

� � � จากนั้น Restart MySQL

แล้วคนใช้ UTF-8 จะทำยังไงในเมื่อเรา SET ทุกอย่างเป็น tis620 หมด
� � - คนใช้ UTF-8 ต้องมา mysql_db_query($dbname,"SET NAMES UTF8"); เองซะแล้ว !!
� � � ** ในการ Input ข้อมูลต่างๆใน phpMyAdmin นั้นจะไม่มีผลใดๆ กับผู้ใช้ UTF8

เมื่อก่อนไม่เห็นมีแบบนี้เลยแล้วเมื่อก่อนให้เลือก character set คืออะไร
� � - เมื่อก่อนเป็น Character Set แบบปลอมๆ คือข้อมูลต่างๆที่เก็บลงฐานข้อมูลมันคือ latin1 นั่นเอง
� � � แล้วทำไม Latin1 มันใช้ภาษาไทยได้หละ แน่นอนอยู่แล้วมันใช้ได้เนื่องจาก latin1 มัน Key map แบบเดียวกะ keyboard ไทย
� � � และประเทศอื่นๆ ก็เป็น Key Map เดียวกัน แต่สมัยนี้พวกภาษาจะไม่ขึ้นอยู่กับ Key Map ที่เราเห็นอยู่แล้ว (UTF-8)
� � � *** และที่สำคัญในเวอร์ชั่น 4.0, 3.x มีให้เลือก character set ตรงนั้นไม่ได้มีความหมายว่า เก็บข้อมูลเป็นภาษาไทย
� � � �ความหมายของมันคือ เรืยงลำดับภาษาไทย ต่างหาก คนไทยจึงเข้าใจผิดๆ มานาน -_-' กับ tis620 ใน MySQL
� � � ไม่ก็ลองย้อนไปดูได้ครับแม้ว่าจะเลือก charset เป็น latin1 มันก็เก็บข้อภาษาไทยได้ เพียงแต่เรียงลำดับภาษาไทยไม่ได้เท่านั้น

แล้วทำไมสมัยนี้ MySQL ทำไมยุ่งยากกว่าเดิมเยอะ
� � - มันไม่ได้ยุ่งยากหรอกครับ มันอยู่ที่เราจะปรับตัวมากกว่า อย่ายึดติดกับหนังสือตามห้องสมุด เพราะที่ท่านอ่านมันเป็นความรู้เก่าๆ
� � � ผมไม่ได้บอกว่าหนังสือที่เค้าขายกํนมันไม่ดีนะครับ เพียงแต่อยากจะบอกว่าที่เค้าขายกัน มันตกยุคไปนานโขแล้ว
� � � เริ่มต้นทำความเข้าใจกับ MySQL ใหม่ เพราะที่มองเห็นว่ายุ่งยากกว่าเดิมจริงๆ ไม่ใช่ ควรเรียกว่าเป็นทางเลือกใหม่จะเหมาะสมกว่า
� � � เพราะว่าระดับภาษาของ MySQL จะเจาะลึกลงไปเยอะมากคือ
� � � � - ต้องกำหนดภาษาเมื่อ Connect to Database
� � � � - ต้องกำหนดภาษาเมื่อ Create Database (การเรียงลำดับ)
� � � � - ต้องกำหนดภาษาเมื่อ Create Table (การเรียงลำดับ)
� � � � - ต้องกำหนดภาษาเมื่อ Create Field (การเรียงลำดับ)

รู้ปัญหามานานแล้วทำไมพึ่งมาบอก ??
� � - เพราะผมเลิกใช้ TIS-620 ไปแล้ว ตอนนี้ใช้แต่ UTF-8 ดีกว่าเยอะ !!

ความเสถียรของ MySQL 5.x เป็นยังไงบ้างเมื่อเทียบกับตัวเวอร์ชั่นเก่าๆ
� � - เสถียรกว่าเวอร์ชั่นเก่าๆ มาก ไม่มีอาการ Crash อิดๆ ออดๆ เหมือนแต่ก่อน ดังนั้น แนะนำให้ใช้เป็นอย่างยิ่ง

PHP5 ทำไมมี Bug เยอะจัง
� � - อันนี้ก็เข้าใจผิดๆ อีกเรื่องหนึ่งที่เจอกันเยอะมาก เข้าใหม่เสียว่า ที่ดูเป็น Bug ที่เห็นนั่นแหละ
� � � คือเราเองเขียน Source Code ผิด เนื่องจาก PHP5 มี Sesnsitive มากๆ เกี่ยวกับการเขียน Code หลังจากที่
� � � ผมเลือกใช้ PHP5 ผมจึงรู้ว่าสมองอันน้อยนิดที่คิดว่าผมเขียนโปรแกรมถูกนั้น ปรากฏว่าเจอ Error กระจาย
� � � ต้องมาไล่แก้ code ใหม่อีกครั้ง ซึ่ง Error ที่แจ้งออกมา เราจะเห็นได้ว่าเราเขียนผิดเองจริงๆ และทำให้ผมมองย้อน
� � � กลับไปที่ PHP4 จึงทำให้รู้ว่า PHP4 นี่แหละที่มี Bug เยอะกว่า PHP5เพราะว่าไม่ยอมแจ้งข้อผิดพลาดขึ้นมาเลย
� � � ทั้งๆ ที่มีผิดอยู่เห็นๆ บทพิสูจน์นี้ทดสอบบน Domain ที่อยู่ใน Hosting ผมกว่า 60 กว่าโดเมนสามารถทำงาน
� � � ได้กับ PHP5 ได้อย่างไม่มีปัญหาใดๆ เลยแม้แต่น้อย อีกทั้ง PHP5 ยังทำงานเร็วกว่า PHP4 เพราะเนื่องจากว่า PHP5
� � � เลือกใช้ Zend Engine 2 นั่นเองจึงทำให้ความเร็วเพิ่มขึ้นมาประมาณ 20% และลด Load CPU ของ Server
� � � ลงไปเยอะมาก

แล้วแบบนี้ก็ต้องหันมาใช้ PHP5 แทนที่ PHP4 ใช่ไหม ?
� � - อันนี้ขึ้นอยู่กับความชอบของแต่ละคน แต่ถ้าให้ผมแนะนำใช้เถอะครับ เพราะตอนนี้ PHP6 เค้าจะออกมากอีกแล้ว
� � � แต่ว่าตอนนี้คุณยังไม่ได้เริ่มต้นที่จะทดลองใช้ PHP5 เลย ขืนใช้ PHP4 แล้ว Upgrade เป็น PHP6
� � � ผมรับประกันได้เลยว่าคุณต้องปวดหัวแบบสุดๆ แน่นอน !! แล้วจะมาบอกอีกไม่ได้ว่า PHP5 และ PHP6 เค้ามี Bug !
� � � ใช้ PHP4 แทนแล้วกัน ก็ขอยืนยันอีกครั้งว่า Source Code ของคุณจะเป็น Source Code รุ่นโบราณที่สุดในโลก
« แก้ไขครั้งสุดท้าย: 27 ตุลาคม 2006, 09:56:53 โดย nostalgia »
ให้ฉันดูแลเธอ รักเธอได้ไหม

(\_/)
(='.'=)
("")_("")

ออฟไลน์ Keetawat

  • **
  • 877
  • 3
  • เพศ: ชาย
Re: [Article] ทำความเข้าใจกับ MySQL 5.x, 4.x และ PHP เวอร์ชั่น 5
« ตอบกลับ #1 เมื่อ: 31 พฤษภาคม 2007, 00:04:43 »
ผม download มาใช้แล้วครับ MySQL-5.23 ครับ ระบบเรื่องความเร็วดูดีมากคัรบ
แต่ผมใช้งานกับ Application ที่พัฒนาบน VB ครับ
เวลานำข้อมูลออกมาดูแล้วการแสดงผลข้อมูลออกมาเป็น ?????? เมื่อเราใช้งานกับฐานข้อมูลที่เป็นภาษาไทยครับ
แต่เวลาใช้กับข้อมูลที่เป็นภาษาอังกฤษไม่มีปัญหาครับ เร็วดีครับ
จึงอยากจะขอคำปรึกษานะครับว่าถ้าหากจะให้เป็นภาษาไทยเราต้องทำอย่างไรบ้างครับ
ขอบพระคุณล่วงหน้านะครับ
เมื่อ: 30 พฤษภาคม 2007, 23:57:44
แสดงว่าถ้าหากเราสามารถให้เก็บข้อมูลและสามารถให้แสดงผลข้อมูลออกมาเป็นภาษาไทยได้ การเรียงลำดับของข้อมูลก็ขึ้นอยู่กับว่าเราเลือก tis620 เพื่อต้องการให้เรียงลำดับตามลำดับโดยอิงจากอักขระไทยถูกมั้ยครับ อืมม์ ผมลืมบอกไปครับ ผมลงใน Red Hat 9 นะครับ
แดงล้วนไซร้ปลิวไสวใช่ธงชาติ    ขาวล้วนอาจมิบ่งได้ใช่ศาสนา
น้ำเงินล้วนมิอาจหมายใช่กษัตรา           หากไม่มารวมเป็นธงชาติไทย

รู้รักสามัคคี

คิดถึง VB.NET คิดถึงคุณ BuffBear  อิอิ

bugnus

Re: [Article] ทำความเข้าใจกับ MySQL 5.x, 4.x และ PHP เวอร์ชั่น 5
« ตอบกลับ #2 เมื่อ: 31 พฤษภาคม 2007, 01:01:34 »
แสดงว่าถ้าหากเราสามารถให้เก็บข้อมูลและสามารถให้แสดงผลข้อมูลออกมาเป็นภาษาไทยได้ การเรียงลำดับของข้อมูลก็ขึ้นอยู่กับว่าเราเลือก tis620 เพื่อต้องการให้เรียงลำดับตามลำดับโดยอิงจากอักขระไทยถูกมั้ยครับ อืมม์ ผมลืมบอกไปครับ ผมลงใน Red Hat 9 นะครับ

ใน Linux ก็แก้เหมือนที่คุณ nostalgia บอกนั่นแหล่ะครับ แต่ไฟล์มันเป็น /etc/my.cnf ครับ