如果表格或表格中的字段不存在,是否有一种可接受/安全的方法来忽略插入语句?
我花了很多时间尝试根据排除列表来过滤数组' (也是一个数组),我意识到,如果排除列表'经常变化可能是一个维持头痛的问题。我想知道处理整个数组是否更容易,创建所需的INSERT / UPDATE查询以及是否需要数据(此时无论如何)只是忽略INSERT / UPDATE查询。在将来,如果以前忽略了以前忽略的数据,那么改变数据库而不是重写排除列表...完全愚蠢的想法??
澄清我们开始的数据数组:
阵列的样本(来自第三方并可能会发生变化)如下所示:
{
"ItemTypeCode": 0,
"ItemTypeDescription": "Normal",
"VendorId": "621eb496-d6d1-4860-af9b-ccae97bf4ef8",
"PurchaseOrderId": "d10991e0-a3b5",
"FreightDataId": null,
"Quantity": 1,
"Model": "ZZEAGLEUPGR",
"StockModel": "",
"AltStockModel": "",
"AltModel": "",
"CatalogProdId": "723b8e0b",
"CustomerSpecificPricings": [],
"GasSteamUtilityGrids": [],
"HvacUtilityGrids": []
}]
最终用户可能不需要(此时无论如何)" FreightDataId"或者" GasSteamUtilityGrids"中的任何数据;子阵列。
答案 0 :(得分:0)
不要试图这样做。
如果您允许用户指定表名和列,那么您已经处于危险的路径上。我强烈建议不要这样做。保护是原始的。
但是,如果这是你想要继续的方式,你实际上应该不使用黑名单(排除列表),而是使用白名单(包括列表)。用户只能指定列出的表和列来执行数据库操作。这意味着当您添加新表和/或字段时,即使您忘记调整白名单,也是安全的。
不要试着没有这样的清单。保护比不必维护这样的(白色)列表的好处重要得多。