สคริป php คำสั่ง update sql ทำไมมันไม่ทำงาน ผิดตรงไหนกัน!!

เริ่มโดย BlueDragon, 30 สิงหาคม 2016, 13:58:23

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

BlueDragon

เป็นสคริป Update ค่า Status มีแค่ 2 กรณี คือ on กับ off ถ้าเดิมเป็น on อยู่คลิกก็จะเปลี่ยนเป็น off, ถ้าเป็น off อยู่คลิกก็จะเปลี่ยนเป็น on การทำงานคือ คลิกแล้วส่งค่า action สำหรับเข้า Loop Update และส่งค่า status เดิม และ id ของ record ข้อมูลไป แต่มันไม่ยอม update แล้ว echo เช็ค loop ก็เข้า loop ถูก ลอง echo คำสั่ง sql ออกมา แล้วลงเอาไปใส่ช่อง SQL ของ phpMyadmin ก็คิวรี่ update ได้ แต่ทำไม สคริปตามด้านล่างถึงไม่อัพเดต คือ ฟ้องว่า Update Status Succesfuly แต่พอกลับไปหน้า list.php สถานะกลับไม่เปลี่ยน ดูใน db ก็เหมือนไม่ได้อัพเดต

ตกม้าตายตรงไหน รบกวนช่วยดูให้หน่อยจ้า


หน้ารายการ list.php

<a href="act.php?action=change&status=<?php echo $result[status]; ?>&id=<?php echo $result[e_id]; ?>" onclick="return confirm('กรุณายืนยันอีกครั้ง !!!')">ปุ่มสถานะ</a>



หน้า Action act.php

if ($_GET['action'] != '' and $_GET['action'] == 'change') {
$id = $_GET['id'];
    //echo "Action";
    if ($_GET['status'] != '' and $_GET['status'] == 'on') {
         //echo "Action - Change to off";
         $sql_status = "UPDATE $dbname.$table SET $table.status = 'off' WHERE $table.e_id = $id";
         //echo $sql_status;
    } elseif ($_GET['status']!= '' and $_GET['status']== 'off') {
         //echo "Action - Change to on";
         $sql_status = "UPDATE $dbname.$table SET $table.status = 'on' WHERE $table.e_id = $id";
         //echo $sql_status;
    }

              if ($sql_status) {
              echo "<script type='text/javascript'>";
              echo "alert('Update Status Succesfuly');";
              echo "window.location = '่list.php'; ";
              echo "</script>";
              }
}



f206cs

ใส่ mysql_query($sql_status); หรือยังครับ
หรือคำสั่งที่ให้เรียกทำงานตามคำสั่ง sql น่ะครับ

เท่าที่ดูรู้สึกจะเขียนแค่คำสั่ง sql ไว้เฉยๆนะครับ

:wanwan044:

Crosshunter

ในหน้า act.php

ไม่ได้มีการเอา $sql_status ไปทำการ query นะคร้าบ


เช่น

mysql_query('$sql_status');


itzonebox.com กล่องไอทีมีสาระ

BlueDragon

อ้างถึงจาก: f206cs ใน 30 สิงหาคม 2016, 14:14:34
ใส่ mysql_query($sql_status); หรือยังครับ
หรือคำสั่งที่ให้เรียกทำงานตามคำสั่ง sql น่ะครับ

เท่าที่ดูรู้สึกจะเขียนแค่คำสั่ง sql ไว้เฉยๆนะครับ

:wanwan044:

อ้างถึงจาก: Crosshunter ใน 30 สิงหาคม 2016, 14:16:28
ในหน้า act.php

ไม่ได้มีการเอา $sql_status ไปทำการ query นะคร้าบ


เช่น

mysql_query('$sql_status');




:wanwan017:

ขอบคุณค่ะ ตกม้าตายจริงๆ ด้วย
ไม่ได้เขียนนานๆ ลืมไปเลย ^^

thank +1 ค่ะ

esanza.com

ใครต้องการเช่าโฮสที่มี Control Panel ดีๆ
และ Support ดี แนะนำ => [direct=https://support.hostatom.com/aff.php?aff=456]โฮสอะตอม[/direct]

BlueDragon

อ้างถึงจาก: esanza.com ใน 30 สิงหาคม 2016, 17:49:21
:wanwan024: ต่อไปนี้จะไม่มีวันลืม query แน่นอนครับ


:wanwan004: ใช่เลยค่ะ ไม่ได้ Coding มานาน
ก็คิดอยู่ว่า logic มันถูกหมด ... แบบต้องตกม้าตายแน่ๆ นอน 555+

kingofdollars

เขียนแบบนี้ระวังโดน SQL INJECTION นะครับ เห็นแล้วเสียวเลยหากไปใช้ในงานสำคัญ


where id='$id'; ตรงนี้ ค่า ID ต้องกรองให้เหลือเฉพาะค่าที่เป็นตัวเลขจริงๆ นะครับ เจอโฮสที่ไม่ดัก escape string นี่หนาวเลยนะครับ