mysql:如果表和/或字段不存在则忽略INSERT?

时间:2016-04-30 19:19:51

标签: php mysql

如果表格或表格中的字段不存在,是否有一种可接受/安全的方法来忽略插入语句?

我花了很多时间尝试根据排除列表来过滤数组' (也是一个数组),我意识到,如果排除列表'经常变化可能是一个维持头痛的问题。我想知道处理整个数组是否更容易,创建所需的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"中的任何数据;子阵列。

1 个答案:

答案 0 :(得分:0)

不要试图这样做。

如果您允许用户指定表名和列,那么您已经处于危险的路径上。我强烈建议不要这样做。保护是原始的。

但是,如果这是你想要继续的方式,你实际上应该不使用黑名单(排除列表),而是使用白名单(包括列表)。用户只能指定列出的表和列来执行数据库操作。这意味着当您添加新表和/或字段时,即使您忘记调整白名单,也是安全的。

不要试着没有这样的清单。保护比不必维护这样的(白色)列表的好处重要得多。