在环插入件的动态量[复制](Dynamic amount of insert in loop [du

2019-10-31 05:53发布

这个问题已经在这里有答案 :

很抱歉,如果这似乎是一个简单的问题,但我已经搜查高和低的谷歌和#1,虽然有回答类似的问题,但没有完全像我目前的状况是什么。 此外,我最近刚回到编程和使用PDO和准备语句,所以我一直没有掌握技术可自从开始第一次。

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

    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}')";
        }
    }

这显然创建查询的动态量...现在我想将它转换,所以我可以准备/绑定值(列是当值从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操作在一个循环。 那是个不错的办法?

永远不会有刀片的大幅量。 最会像10福利和3或4对文学的,所以我想象做这一切在一个循环在性能方面也不会影响我很多,但是为了将来的参考,这将是来这个有效的最佳途径?

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

文章来源: Dynamic amount of insert in loop [duplicate]