这个问题已经在这里有答案 :
插入多行与PDO预处理语句 (4个回答)
PDO MySQL的:在一个查询中插入多行 1个回答
多个插入用PDO [重复] (1个回答)
PDO多INSERT语句 (1个回答)
很抱歉,如果这似乎是一个简单的问题,但我已经搜查高和低的谷歌和#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对文学的,所以我想象做这一切在一个循环在性能方面也不会影响我很多,但是为了将来的参考,这将是来这个有效的最佳途径?
感谢您的任何有建设性的意见。