很抱歉,如果这看起来像一个简单的问题,但我在谷歌和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分,所以我想在循环中完成这一切并不会影响我的表现,但是为了将来参考,最好的方法是什么呢?这有效吗?
感谢任何有建设性的意见。