วันนี้เราจะมาพูดถึงการ Debug ว่ามันคืออะไร ทำไมต้องมาพูดถึงกันด้วย เรื่องมันมีอยู่ว่า ผมชอบไปหากระทู้ และตอบคำถามเกี่ยวกับปัญหาการเขียนโปรแกรม ออกตัวไว้ก่อนว่า ผมนั้นไม่ไ้ด้เก่งอะไร เพียงแต่อยากช่วยคนที่ประสบปัญหาการเขียนโปรแกรม ถ้าผมสามารถช่วยได้ตรงจุดนี้ผมก็ยินดีครับ :)
ที่มาที่ไปของการต้องการเขียนเรื่อง Debug
แต่บางครั้งนั้นที่ผมได้เจอ คือการถามคำถามแบบว่า “พี่ครับผมไม่รู้ว่ามันผิดตรงไหน พี่ช่วยดูให้หน่อยครับ” ตามมาด้วยโค้ดซึ่งยาวมากกกกกกอว๊ากกกกกกก หรือ บางทีนั้นตามมาด้วยโค้ดที่ งง มากๆ ซึ่งไม่รู้ว่าประกาศตัวแปรไว้ตรงไหนอย่างไรบ้าง ซึ่งบางครั้ง มันทำให้คนที่จะมาช่วยนั้นไม่สามารถช่วยคุณได้อย่างเต็มเพราะ ไม่ใช่ไม่อยากจะช่วย แต่ ไม่รู้ว่าจะเริ่มตรงไหน เพราะว่าเจ้าของกระทู้หรือคำถามจะรู้ตัวเองที่สุด อ่ะตรงนี้ผมจะแยกไปเขียนเกี่ยวกับหัวข้อ การถามตอบกระทู้ทางโปรแกรมที่ควรทำโปรดติดตามแล้วกัน อ่ะว่ากันถึงหัวข้อนี้กันก่อนแล้วกันครับ บางครั้งการที่คุณผู้อ่านหรือผู้เขียนโปรแกรมนั้นเจอปัญหาแน่ๆคือ Bug ของโปรแกรม
เอ๋ ! แล้วผมเป็นผู้เริ่มต้นเขียนแล้ว bug คืออะไรหว่า bug คือ แมลง ผัวะ ! ตลกหรอคนอ่านเขาตั้งใจมาอ่าน เอ่อ… ครับคือ bug เนี้ยเป็นข้อผิดพลาด ผัวะ ! เฮ้ย ! ตีผมไหมอ่า ( T^T ) เอ่อกันไว้ก่อนเผื่อจะเล่นมุขต่อ – -” อ่ะนะ ( โหดร้ายยยยยยย ) แล้วข้อผิดพลาดอะไรหรอครับที่ผมกล่าว ก็คือข้อผิดพลาด ทั้งหมด ที่ผมไม่อยากให้เกิดขึ้นหรือทำให้โปรแกรมของคุณ ทำงานไม่ตรงกับที่คุณออกแบบไว้นั่นแหละครับ จึงทำให้การ Debug เป็นแมลงที่ดี อุ๊บ ! ( โดนฮุคท้อง ) ปะ…เป…เป็นการ… แก้ไขข้อผิดพลาดของโปรแกรมครับ ( จุก >3< ) เอาล่ะครับเริ่มกันหน่อยเอาแบบง่ายกันก่อน
[php]
$sql = “SELECT * FROM member WHERE uername='” . $username . “‘ and password = ‘” . $password . “‘”;
$query = mysql_query($sql);
$num = mysql_num_rows($query);
if($num > 0)
{
echo ‘This username already use for registeration.’;
}
[/php]
จากตัวอย่างโค้ดข้างบนเนี้ย มือใหม่มักจะผิดพลาดบ่อยเพราะว่ายัง query ไม่คล่องหรือพิมพ์ผิดแต่ไม่รู้ว่าผิดอย่างไร เรามาเริ่มเช็คกันเลยคร้าบบบบบบบ ^w^ /อย่างแรกที่เราต้อทำคือการ echo หรือ print แล้วเราควรจะเริ่มจากจุดไหนล่ะ ? คำตอบคือให้คุณเริ่มตั้งแต่ จุดที่มีปัญหาขึ้นไปเช่น
[php]
//error เตือนว่ามีปัญหา ณ จุดที่มีการใช้ฟังก์ชั่น mysql_fetch_array ซึ่งมือใหม่มักจะเจอปัญหาตรงจุดนี้แนะนำให้ไป echo ตัวแปร $sqlหรือตัวแปรที่คุณเก็บคำสั่ง query
<pre>$sql = “SELECT * FROM member WHERE uername='” . $username . “‘ and password = ‘” . $password . “‘”;
echo $sql;</pre>
[/php]
เสร็จแล้วให้คุณลองเอาค่าที่ได้ไป query โดยตรงใน phpmyadmin นะครับเอ้าแล้วมันอยู่ตรงไหนล่ะก็ให้คุณเข้า phpmyadmin ก่อนนะครับ
- เลือกฐานข้อมูล ถ้าของคุณ คุณก็เลือกเอาอ่ะครับ
- เลือก table ที่ต้องการในที่นี้อาจจะเป็นพวก member หรือ user
- กดไปที่หัวข้อนั้นเลยครับ แล้วใส่คำสั่งที่ทำการ echo ค่าออกมาครับถ้าสมมติว่าคำสั่งคุณไม่ถูกต้องจะมี error ออกมาดังภาพด้านล่าง
ก็อาจจะสังเกตุว่าิผิดที่ตรงไหนอย่างไรแล้วก็ไปแก้ไขตัวแปรตามนั้น
เอาล่ะครับวันนี้ก็ได้ความรู้กันไปหน่อยแล้วติดตาม มา debug ด้วยตัวเอง part 2