PHP Notice: Trying to get property of non-object in …

กรณีตัวอย่างที่เกิด PHP notice in error_log ดังนี้

PHP Notice: Trying to get property of non-object in /home3/apps/includes/function.php on line 353

เข้าไปดูในไฟล์ function.php บรรทัดที่ 353 พบว่าเป็นฟังก์ชันสั้นๆดังนี้

function getAppFolder($APPID)
{
$SQL=”select app_folder from “.db_pre.”apps where appid=’$APPID'”;
$QUERY=mysql_query($SQL);
$res=mysql_fetch_object($QUERY)->app_folder;
return $res;
}

บรรทัดนี้เป็นการรับค่าจากการค้นหาข้อมูลในฐานข้อมูล โดยมีการเรียกใช้ where appid=’$APPID’

สาเหตุ
ปัญหาเกิดขึ้นเมื่อมีการส่งค่า $APPID เข้ามาแล้วค้นหาค่า app_folder ไม่ได้ เช่น $APPID ไม่มีค่า หรือไม่มีค่า $APPID ในฐานข้อมูล

แนวทางการแก้ไข
1. ก่อนเรียกใช้ฟังก์ชันนี้ให้ตรวจสอบค่าตัวแปร $APPID ว่าไม่เป็นค่าว่างเสียก่อน
2. อาจทำการปรับปรุงฟังก์ชัน โดยการตรวจสอบผลการรัน $SQL ถ้า error ก็ return ค่าอีกแบบ หรือ return เป็นค่า boolean true or false ก็ได้ เช่น

function getAppFolder($APPID)
{
$SQL=”select app_folder from “.db_pre.”apps where appid=’$APPID'”;
$QUERY=mysql_query($SQL);

if ($QUERY) {
$res=mysql_fetch_object($QUERY)->app_folder;
}else { $res=”something..” ; }

return $res;

}

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *