[รบกวน] ตรวจ code php ด้วยครับ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

Dwight
PHP Jr. Member
PHP Jr. Member
Posts: 13
Joined: 09/12/2011 9:55 am

[รบกวน] ตรวจ code php ด้วยครับ

Post by Dwight »

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\BtheBrovs\show_detail.php on line 12
รบกวนช่วยตรวจให้ทีครับ ผมอาจจะพลาดไป

Code: Select all

<?

        $link=mysql_connect("localhost", "root", "lorenciaz");
        mysql_query("use webboard");
        function renHTML($strTemp)
        {
            $strTemp=nl2br(htmlspecialchars($strTemp));
            return $strTemp;
        }
        $sql="select * from question where qno=$item";
        $result=mysql_query($sql);
        $dbarr=mysql_fetch_array($result); //Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\BtheBrovs\show_detail.php on line 12


?>
คำถาม <b>
<?

        echo renHTML($dbarr['qtopic']);

?>
</b><br>
<table width="100%" border="1" bgcolor="#e0e0e0" bordercolor="black">
<tr><td>
<?
        echo renHTML($dbarr['qdetail']);
?><br>
โดย <b>
<?

        echo renHTML($dbarr['qname']);

?></b>
</td></tr>

<?

        $sql="select * from answer where aquestion=$item";
        $result=mysql_query($sql);
        if($result)
        {
            while($dbarr=mysql_fetch_array($result))
        {

?>
คำตอบที่ <b>
<?

        echo $dbarr['ano'];

?></b><br>

<table width="100%" border="1">
<tr><td>

<?

        echo renHTML($dbarr['adetail']);

?><br>
โดย <b>
<?

        echo renHTML($dbarr['aname']);
    
?></b>
</td></tr>
</table><br>

<?
}
}
        echo"<form method=post action=add_answer.php?answerno=".$item.">";
        mysql_close($link);
        ?>
        คำตอบ : <br>
        <textarea cols="40" rows="5" name="a_answer">
        </textarea><br>
        ชื่อ : <input type="text" name="a_name" size="30"><br><br>
        <input type="submit" value="โพสกระทู้">&nbsp;
        <input type="reset" value="ยกเลิก">
        </form>

touleg
PHP Super Member
PHP Super Member
Posts: 480
Joined: 25/01/2010 11:57 pm
Contact:

Re: [รบกวน] ตรวจ code php ด้วยครับ

Post by touleg »

คิดว่ามันไม่สามารถ query คำสั่งได้ ดังนั้นตัวแปร $result จะมีค่าเป็น false จึงไม่สามารถ fetch ข้อมูลออกมาได้

จากที่ดูโค้ดตัวแปร $item น่าจะเป็นการ get ค่ามาจาก url ดังนั้นควรจะใช้ $_GET['item'] จะดีกว่า อีกอย่าง host ส่วนมากไม่เปิดใช้ register_global ดังนั้นมันจะไม่สามารถใช้ชื่อตัวแปรตรงๆได้เลย

$sql="select * from question where qno='{$_GET['item']}'";

ผมใส่ {} ครอบตัวแปร เพื่อป้องกันความผิดพลาดที่เกิดจาก คำสั่ง php ที่อยู่ใน String ดังนั้นจึงใส่ {} ครอบเพื่อให้รู้ว่านี่คือคำสั่ง php นะ ส่วนมากใช้กับตัวแปรที่มีสัญลักษณ์พิเศษ เช่น ' หรือ [
อาจจะไม่ต้องใช้ก็ได้แต่ถ้ามันไม่สามารถใช้ array ใส่เข้าไปใน String ได้ก็ใช้

อีกอย่างเวลาคิวรี่ข้อมูลออกมาแล้วควรจะเขียนโค้ดตรวจสอบด้วยว่ามันคิวรี่ผ่านหรือป่าว เช่น

Code: Select all

$sql="select * from question where qno='{$_GET['item']}'";
$result = mysql_query($sql);
if(!$result)
{
     echo "Error";
}else{
    //ไม่ Error ก็ทำในส่วนนี้
}

หรือจะเขียนสั้นๆแบบนี้ก็ได้
$sql="select * from question where qno='{$_GET['item']}'";
$result = mysql_query($sql) or die("Error"); 
//ถ้า Error จะหยุดทำงานบรรทัดล่างทั้งหมดแล้วพิมพ์คำว่า Error ออกมา
//ถ้าไม่ Error ก็ทำบรรทัดต่อไป
 
จะเห็นว่าการตรวจสอบ Error สำคัญแค่ไหน แบบนี้มือใหม่ไม่ค่อยทำกัน พอ Error ก็หาจุดแก้ไขไม่เจอ

เพิ่มเติม
ถ้าอยากรู้ว่า Error อะไรก็ใช้คำสั่ง mysql_error()
ถ้าอยากรู้ว่า Error หมายเลขโค้ดคืออะไรให้ใช้ mtsql_errno() หมายเลขช่วยในการตรวจสอบได้หลายอย่าง และมีประโยชน์หลายอย่างในการเขียนโค้ดด้วย เช่น ต้องการตรวจว่า Primary key ซ้ำหรือป่าว หรือต้องการตรวจว่า ข้อมูลนี้มีข้อมูลในตารางอื่นเชื่อมต่ออยู่หรือป่าว (Foreign Key ) ถ้ามีอยู่ก็ไม่ให้ลบข้อมูลนี้ เป็นต้น เหล่านี้ใช้ตัวเลข Error ช่วยได้ทั้งนั้น ไม่ต้องไปเขียนโค้ดคิวรี่ข้อมูลเพิ่มแค่เอาเลขมาตรวจสอบก็ใช้งานได้แล้ว
Dwight
PHP Jr. Member
PHP Jr. Member
Posts: 13
Joined: 09/12/2011 9:55 am

Re: [รบกวน] ตรวจ code php ด้วยครับ

Post by Dwight »

ขอบคุณมากครับ ได้ความรู้เยอะเลย
Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - PHP”

Who is online

Users browsing this forum: Google Adsense [Bot] and 16 guests