อยากทราบสาเหตุและวิธีแก้ปัญหา การเกิด Warning ใน php connect Mysqli
$str = "UPDATE rleave SET status = 'APPROVE' WHERE id_leave = '".$check."' ";
$Execute = mysqli_query($Connect,$str);
$ExecuteResult = mysqli_fetch_assoc($Execute);
update ไม่สามารถ fetch ค่าได้ครับ เพราะ $Execute ได้แค่ ค่า boolean true / false
พอไป fetch ก็จะได้รับ warning แน่นอนครับ
ประวัติการแก้ไข 2016-06-27 17:35:50
Date :
2016-06-27 17:33:42
By :
Chaidhanan
ฟังก์ชัน mysqli_fetch_assoc ใช้สำหรับดึงแถวข้อมูลที่ได้จากการ query (คำสั่ง SELECT )
Code (PHP)
$str = "UPDATE rleave SET status = 'APPROVE' WHERE id_leave = '".$check."' ";
$Execute = mysqli_query($Connect,$str);
$ExecuteResult = mysqli_fetch_assoc($Execute);
จากคำสั่ง SQL ข้างบน คุณใช้คำสั่ง UPDATE ดังนั้นเมื่อสั่งประมวลผลคำสั่ง SQL โดยใช้ฟังก์ชั้น mysqli_query() ผลลัพธ์ที่ได้กลับมา คือ True ในกรณีที่สามารถปรับปรุงข้อมูลได้ และ False ในกรณีที่ปรับปรุงไม่ได้ ดังนั้นค่าของข้อมูลที่ถูกเก็บในตัวแปรชื่อ $Execute จะมีค่าแค่ True หรือ False เท่านั้น
ทำให้ฟังก์ชัน mysqli_fetch_assoc() กลับไปดึงแถวข้อมูลจากตัวแปร $Execute ซึ่งมีค่าเป็น True หรือ False ไม่ได้ เพราะฟังก์ชัน mysqli_fetch_assoc() จะดึงข้อมูลแถวออกมาได้กับข้อมูลที่อยู่ในรูปแบบของ Array เท่านั้น
เลยเกิด Warning ดังกล่าวขึ้นมาครับ
ปรับโค้ดใหม่ แบบนี้ครับ
Code (PHP)
header("Content-type: application/json; charset=utf8");
$Connect = mysqli_connect("localhost","root","","cmc")or die(mysqli_error());
error_reporting( error_reporting() & ~E_NOTICE );
mysqli_query($Connect,"SET NAMES UTF8");
$check = $_POST["noleave"];
$str = "UPDATE rleave SET status = 'APPROVE' WHERE id_leave = '".$check."' ";
$Execute = mysqli_query($Connect,$str);
if($Execute){
$arr['Status'] = "1";
}else{
$arr['Status'] = "0";
}
mysqli_close($Connect);
echo json_encode($arr);
ปล. หากเข้าใจผิดพลาดประการใดต้องขออภัยด้วยครับ
Date :
2016-06-27 17:56:59
By :
mm2mail
Load balance : Server 02