当dhtmlxgrid列选择选项更改时,需要更新另一个数据库值

时间:2017-01-13 04:34:01

标签: php mysql dhtmlx

我使用dhtmlxgrid向用户显示MySQL数据库信息,能够编辑行单元格数据。一列productionstage显示为组合框列,可以将值更改为Staged Done。这完全更新了数据库表。但是,我需要检查productionstage列的值以测试Staged Done值。如果将productionstage设置为该值,我需要在同一个表中使用另一列stagestatus来将其值更新为Production。 DB表中的stagestatus列最好不是最终用户可查看的列,而是在后端触发。

感谢所有帮助。谢谢!

我的代码:

//update row
$sql =  "UPDATE invoices SET editby='".$editBy."', editpage='".$editPage."', serverip='".$serverIp."', ip='".$Ip."',floornotes='".$_GET["floornotes"]."',productionstage='".$_GET["productionstage"]."' where id=".$_GET["gr_id"]."'";
$res = mysqli_query($sql);


if (($_GET['productionstage']) == 'Staged Done' ) {
    //update stagestatus from 'Scheduled' to Production if moved to 'Staged Done' in Glass Prep.
$sql1 = "UPDATE invoices SET stagestatus = 'Production') WHERE id=".$_GET["gr_id"]."'";
$res1 = mysqli_query($sql1);

}

注意::我理解前一个程序员使用的现有方法将脚本暴露给SQL注入攻击 - 我也将更新此脚本以使用预准备语句...谢谢!

1 个答案:

答案 0 :(得分:0)

所以我必须在代码中遇到一个错误。经过一些测试和编辑,下面的代码解决了这个问题(是的,dhtmlxgrid可以处理每个网格多个UPDATE语句)。

解决方案:

    //update row
$sql =  "UPDATE invoices SET editby='".$editBy."', editpage='".$editPage."', serverip='".$serverIp."', ip='".$Ip."',floornotes='".$_GET["floornotes"]."',productionstage='".$_GET["productionstage"]."' where id=".$_GET["gr_id"]."";
$res = mysqli_query($sql);



if (($_GET['productionstage']) == 'Staged Done' ) {


    $sql1 = "UPDATE invoices SET stagestatus = 'Production' WHERE id=".$_GET["gr_id"]."";
    $res1 = mysqli_query($sql1);

} else {

    print("<action type='error'>SQL query error</action>");

}

请注意:我的下一步是使用预准备语句进一步更新代码,以使脚本更安全。

谢谢!