循环

时间:2018-02-06 03:49:04

标签: php mysql pdo sql-update sql-insert

很抱歉,如果这看起来像一个简单的问题,但我在谷歌和Stackoverflow上搜索得很高,虽然有类似问题的答案,但没有完全像我目前的情况。另外,我刚刚回到编程并且第一次开始使用PDO和准备好的陈述,所以我还没有掌握这门艺术。

我有以下代码,生成SQL :(我将使用相同的代码生成UPDATE版本以便稍后更新这些插入)

    if(isset($vars['benefits']))
    {
        foreach($vars['benefits'] as $benefit)
        {
            $sql['benefits'][] = "INSERT INTO " . BENEFITS_TABLE . " (benefit) VALUES ('{$benefit['benefit']}')";
        }
    }

    if(isset($vars['sliteratures']))
    {
        foreach($selectedIDs as $litID)
        {
            $sql['literature'][] = "INSERT INTO " . PRODLIT_TABLE . " (productID, literatureID) VALUES ('{$productID}', '{$litID}')";
        }
    }

这显然创建了查询的动态数量......现在我尝试转换它以便我可以准备/绑定值(列是一个硬编码数组,而值是通过POST检索的来自HTML表单。)

我不知道这样做的最佳途径是什么。或者如何正确地做到这一点可能是更好的说法。

我可以分别在每个查询的循环中执行此操作。像这样:

    if(isset($vars['benefits']))
    {
        foreach($vars['benefits'] as $benefit)
        {
            $sql = "INSERT INTO " . BENEFITS_TABLE . " (benefit) VALUES (:benefit)";

            $stmt = $db->prepare($sql);
            $stmt->bindParam(":benefit", $benefit['benefit'], PDO::PARAM_STR);
            $stmt->execute();
        }
    }

另一个查询同样如此,但这会将SQL操作置于循环中。这是一个糟糕的方法吗?

永远不会有大量的INSERTS。对于福利来说,大多数会是10分,对于文学来说,大概是3分或4分,所以我想在循环中完成这一切并不会影响我的表现,但是为了将来参考,最好的方法是什么呢?这有效吗?

感谢任何有建设性的意见。

0 个答案:

没有答案