ขอถามเรื่องมันไม่ยอมเช็ค username ซํ้าในฐานข้อมูล มันข้ามไปลงข้อมูลเลยครับ
$checkusername = mysql_query("SELECT * FROM users WHERE email = '$email' AND username = '$username'");
$nr = mysql_num_rows($checkusername);
#echo $nr; ถ้ามีข้อมูลแสดงว่าซ้ำ ครับ
Date :
2012-12-23 22:20:46
By :
deawx
ลองแล้วครับพี่ มันเช๊ค ว่า มีemail ซั้า แต่ เมื่อใส่ emailตัวอื่น แต่usernameที่ซํ้า แล้วมันบอกว่า 0
คือตอนนี้ไม่เข้าใจว่าทําไมมันไม่เช๊ค usernameให้ด้วยอ่าครับ
Date :
2012-12-23 22:29:24
By :
kenghockey
ต้อง check ทีละอย่างนะผมว่า หรือไม่ก็ใช้ OR แทน AND
Date :
2012-12-24 00:17:05
By :
Krungsri
ถ้าให้ or มันจะเือกแค่ตัวใดตัวหนึ่ง ผมเลยคิวรี่มันสองทีเลย จะได้ครบๆ แต่มันจะมีข้อเสียตรงช้ารึป่าว
Date :
2012-12-24 06:53:35
By :
kenghockey
ปกติถ้าเป็นการตรวจสอบการลงทะเบียนผู้ใช้งานนั้น จะมีการตรวจสอบเพื่อให้เป็นที่แน่ใจว่าถูกต้องตามข้อกำหนดจริงๆหรือเปล่า
ซึ่งในการตรวจสอบต้องละเอียด และถี่ถ้วน และในที่นี้ก็ต้องการความมั่นใจว่ามีอะไรซ้ำหรือเปล่า เพราะถ้าซ้ำจะต้องไม่สามารถลงทะเบียนได้
การดีไซน์ระบบเพื่อคำนึงถึงความรวดเร็วในการใช้งานก็เป็นสิ่งที่ดีครับ แต่การลงทะเบียนผู้ใช้งานและต้องมีการตรวจสอบคงมีไม่บ่อยสักเท่าใดนัก เพราะฉะนั้น ถ้าจำเป็นต้องมีการคิวรี่มากกว่า 1 ครั้งก็ไม่น่าจะมีปัญหา
ผมมีสิ่งที่น่าจะเอาไปเป็นแนวคิดเพื่อการตัดสินใจว่าจะใช้แบบไหนอยู่ 2 แบบครับ (อย่าลืมว่าฐานข้อมูลควรจะอยู่แยกออกจาก Server)
1. ติดต่อฐานข้อมูล และคิวรี่ให้เสร็จเรียบร้อย แล้วนำข้อมูลมาเก็บใน memory เพียงครั้งเดียว แล้วก็เอาข้อมูลใน memory ไปใช้ในการประมวลผล ซึ่งเหมาะแก่การทำงานกับคิวรี่ที่นานๆ ในระบบใหญ่ๆ เพราะหลังจากคิวรี่เสร็จแล้วก็จะเป็นหน้าที่ของ Server แล้วที่จะต้องทำงานต่อไป
2. ติดต่อฐานข้อมูล และคิวรี่ข้อมูลออกมาเป็นชิ้นๆ (เล็กๆ) แล้วประมวลผล แบบนี้จะทำให้คิวรี่เร็ว ฐานข้อมูลทำงานไม่หนัก แต่คอนเน็คชั่นบ่อยๆ แบบนี้จะเหมาะกับการตรวจเช็คข้อมูล หรือการทำ Autocomplete
ส่วนการใช้ OR หรือ AND นั้น คุณต้องนึกให้ดีนะครับ ว่าต้องการให้ผลลัพธ์ออกมาเป็นแบบไหน
เพราะ OR จะหมายถึง เป็นจริงตัวใดตัวหนึ่งก็ถึงว่าจริง (คุณต้องการแบบนี้หรือเปล่า)
แต่ AND จะหมายถึงต้องเป็นจริงทั้งสองกรณีจึงจะถือว่าเป็นจริง
เพราะฉะนั้นถ้าคุณใช้ AND ในกรณีนี้ แล้วถ้ากรอก e-mail เปลี่ยนไปแค่นิดเดียวก็ถือว่าแตกต่างแล้วครับ (Result = 0 ทันที)
ดังนั้นถ้าคุณต้องการให้ตรวจสอบว่า... ถ้า e-mail หรือ username ตัวใดตัวหนึ่งซ้ำ ก็ถือว่าซ้ำแล้วก็ต้องใช้ OR ครับ
(เพื่อเป็นการเคยชิน ควรจะพูดออกมาเป็นคำพูด หรือเขียนคำพูดภาษามนุษย์ออกมาให้ตรงกับความต้องการ แล้วตีความออกมาเป็น Code)
แต่ถ้าต้องการให้ระบบมีลูกเล่นที่สามารถบอกได้ว่าอะไรซ้ำ ก็ต้องใช้การคิวรี่ 2 รอบล่ะครับ คือการตรวจสอบทีละอย่าง
ประวัติการแก้ไข 2012-12-24 08:49:43
Date :
2012-12-24 08:49:05
By :
Songkram
Load balance : Server 01