$x = ซีรั่ม (จาก form)
$z = ซีรั่ม (จาก Database)
พอเช็คค่าดู มันบอกว่า $z เป็น string ขนาด5ตัว แต่ $x เป็น string ขนาด23ตัว
ใน database ตั้งเป็น varchar ขนาด60ตัวอักษร ผิดพลาดตรงไหนหรอครับ อยากให้มัน เช็คค่าซ้ำครับ
$z น่าจะถูก มี 5 ตัวอักษร ที่ผิดคงเป็น $x
ปัญหาคือ อ่าน $sx มาได้ยังไงมาจากการ submit หรือเปล่า
ดูจากคำอธิบายที่ให้มา เป็นไปได้หลายทางเช่น
1. ไฟลืและ database เป็นคนละอักขระกัน ควรตรวจสอบให้ทั้งสองส่วนเป็นชนิดเียวกันคือ Ansi(TIS-620) หรือ UTF-8
2. ข้อความที่ได้จาก $x อาจเข้ารหัสอยู่ ถ้ามาจากการ submit ลองใช้ rawurldecode() ดู
ปัญหาคือ อ่าน $sx มาได้ยังไงมาจากการ submit หรือเปล่า
ดูจากคำอธิบายที่ให้มา เป็นไปได้หลายทางเช่น
1. ไฟลืและ database เป็นคนละอักขระกัน ควรตรวจสอบให้ทั้งสองส่วนเป็นชนิดเียวกันคือ Ansi(TIS-620) หรือ UTF-8
2. ข้อความที่ได้จาก $x อาจเข้ารหัสอยู่ ถ้ามาจากการ submit ลองใช้ rawurldecode() ดู
$x submit มาครับ แล้ว rawurldecode() คืออะไรหรอครับ แล้วใช้ยังไงอ่าครับ
$x = rawurldecode($x);
เหมือนเดิมครับ ยังเป็น string 23ตัวอักษรเหมือนเดิม ขอความรู้หน่อยได้มั้ยครับ ทำเว็บมาตั้งนานก็ไม่เคยเจอปัญหาแบบนี้ form ก็สร้างแบบธรรมดาเหมือนกันทุก page แต่ทำไมอันนี้จึงเกิดปัญหาครับ ไม่เคยเจอมาก่อนเลยแบบนี้
Quotations by Comment #4เหมือนเดิมครับ ยังเป็น string 23ตัวอักษรเหมือนเดิม ขอความรู้หน่อยได้มั้ยครับ ทำเว็บมาตั้งนานก็ไม่เคยเจอปัญหาแบบนี้ form ก็สร้างแบบธรรมดาเหมือนกันทุก page แต่ทำไมอันนี้จึงเกิดปัญหาครับ ไม่เคยเจอมาก่อนเลยแบบนี้
555+++ บางครั้งปัญหาแบบนี้ก็หญ้าปากคอกครับ
ถ้าข้อความไม่ได้เข้ารหัส ปัญหาอาจอยู่ที่ภาษาครับ
ตรวจสอบว่าทุกอย่างเป็นภาษาเดียวกันทั้งหมด ไฟล์,header,database,field
ลอง echo เอา query ที่ใช้ออกมาดู
ลองแสดงผลลัพท์การ query (ข้อมูลดิบ)
ลองเปลี่ยนเป็นภาษาอังกฤษ
ลองใช้วิธีเปรียบเทียบใน query
ขอบคุณครับ