我使用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注入攻击 - 我也将更新此脚本以使用预准备语句...谢谢!
答案 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>");
}
请注意:我的下一步是使用预准备语句进一步更新代码,以使脚本更安全。
谢谢!