ช่วยแก้โค้ด php ทีค่ะมันขึ้นแจ้งเตือนWarning: mysqli_fetch_array() expects parameter 1

มันขึ้นแจ้งเตือนแบบนี้ค่ะ ต้องแก้ตรงไหนเหรอคะ

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\smartkk\edit_cate1_2.php on line 19

ส่วนอันนี้โค้ดค่ะ

<?php
$ebits = ini_get('error_reporting');
error_reporting($ebits ^ E_NOTICE);
?>
<?php include "conn.php";?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>แก้ไขข้อมูลผู้ประกอบการ</title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
    <?php
       $sql = mysqli_query($conn,"Select * from company WHERE company =".$_GET["Company_Id"]."");
       while($row = mysqli_fetch_array($sql)){
        $id                = $row['Company_Id'];
        $company           =   $row['Company_Name'];
        $f_name     =   $row['Company_owner_name'];
        $l_name  =   $row['Company_owner_surname'];
        $tel        =   $row['Company_tel'];
        $fax        =   $row['Company_fax'];
        $add        =   $row['Company_address'];
    
       }
       
    
    ?>
        <form name="form1" class="form" method="post" action="edit_cate_status.php" enctype="multipart/form-data">
        <center><h1>แก้ไขข้อมูลผู้ประกอบการ</h1></center>
            <hr>
            <table>
            <tr>
                    <td class='t-right'>ID:</td>
                    <td><input type="text" name="id" id="Company_Id" value="<?php echo $row ['Company_Id'];?>" required /></td>
                </tr>
                <tr>
                    <td class='t-right'>ชื่อบริษัท:</td>
                    <td><input type="text" name="company" id="Company_Name" value="<?php echo $row ['Company_Name'];?>" required /></td>
                </tr>
                <tr>
                    <td class='t-right'>ชื่อ:</td>
                    <td><input type="text" name="f_name" id="Company_owner_name" value="<?php echo $row ['Company_owner_name'];?>" required /></td>
                </tr>
                <tr>
                    <td class='t-right'>นามสกุล:</td>
                    <td><input type="text" name="l_name" id="Company_owner_surname" value="<?php echo $row ['Company_owner_surname'];?>" required /></td>
                </tr>
                <tr>
                    <td class='t-right'>เบอร์โทรศัพท์:</td>
                    <td><input type="text" name="tel" id="Company_tel" value="<?php echo $row ['Company_tel'];?>" required /></td>
                </tr>
                <tr>
                    <td class='t-right'>แฟ็กซ์:</td>
                    <td><input type="text" name="fax" id="Company_fax" value="<?php echo $row ['Company_fax'];?>" required /></td>
                </tr>
                <tr>
                    <td class='t-right'>ที่อยู่:</td>
                    <td><input type="textarea" name="add" id="Company_address" value="<?php echo $row ['Company_address'];?>" required /></td>
                </tr>
                </table>
                </br>
    
                    <center>
                        <input class="submit" name="btnSubmit" type="submit" value="บันทึก"/>
                        <a href="category1_2.php">
                            <input type="button" class="cencel" value="ยกเลิก"/>   
                        </a>
                    </center>
                    <br/>
                </form>       
</body>
</html>
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
บรรทัด 1       $sql = mysqli_query($conn,"Select * from company WHERE company =".$_GET["Company_Id"]."");
บรรทัด 2       while($row = mysqli_fetch_array($sql)){

1. error เกิดที่บรรทัด 2 คือ ค่าที่ส่งไปยัง function mysqli_fetch_array() ต้องเป็นค่า result ที่ได้จากการ query แต่ทีนี้ดันเป็นค่า false
    เนื่องจากเกิดการ error ในบรรทัด 1
2. จากข้อ 1 สันนิฐานว่า เกิดจากตัวแปร $_GET["Company_Id"] ซึ่งอาจจะไม่มีค่าเข้ามา หรือ เป็นค่าว่าง ดังนั้น sql ที่ได้จะเป็น
    Select * from company WHERE company =
3. แนวทางป้องกัน
    3.1 ต้องตรวจสอบค่าตัวแปรพวกนี้ก่อนทำการ query
    3.2 ควรเขียน sql แบบนี้
          $company_id = (! empty($_GET['Company_Id'])) ? (int) $_GET['Company_Id'] : '';
          $sql = "Select * from company WHERE company = '{$company_id}';";
          // ถ้านำตัวแปร $_GET['Company_Id'] ไปใส่ใน sql เลย อาจจะเกิด error Undefied variable ได้
          // กรณี $_GET['Company_Id'] เป็นค่าว่าง หรือ ไม่มีค่า
          //     ดังนั้น sql ที่ได้จะเป็น Select * from company WHERE company = '';
          //     ต่อให้ส่งเข้าไป query ในฐานข้อมูลก็ไม่ error / แต่อาจจะไม่ได้ข้อมูลที่ต้องการ
4. สำหรับภาษา php "" และ '' มันต่างกัน ลองดู
   $var = 'xxx';
   echo '$var';
   echo "$var";  => ที่ถูกต้องจะใช้แบบนี้ echo "{$var}"; หรือ $sql = "Select * from company WHERE company = '{$company_id}';";

   แล้วมาบอกทำไม
        echo "xxxx"; => compiler จะต้องประมวลผลค่าที่อยู่ใน "" ถึงจะ print ออกมา
        echo 'xxxx';  => compiler จะ print ค่าใน '' ออกมาเลย (ไม่ต้องประมวลผล)
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่