我有一个包含250个八字符代码的数组。我试图将此数组插入表tbl_coupon。这是我试过的代码,它只向数据库插入1个数据。
我无法弄清楚我错误的地方。
$db = new Connection();
$sql = $db->query('insert into tbl_coupon(code) values(:code)');
$db->beginTransaction();
try {
foreach ($coupons as $coupon) {
$db->bind(':code', $coupon);
}
$db->execute();
} catch (\Exception $e) {
echo $e->getMessage();
$db->cancelTransaction();
}
$db->endTransaction();
答案 0 :(得分:3)
在foreach循环中调用$db->execute();
。 bind()
只是“替换”占位符,因此它被替换250次,只执行最后一次。
$db = new Connection();
$sql = $db->query('insert into tbl_coupon(code) values(:code)');
$db->beginTransaction();
try {
foreach ($coupons as $coupon) {
$db->bind(':code', $coupon);
$db->execute();
}
} catch (\Exception $e) {
echo $e->getMessage();
$db->cancelTransaction();
}
$db->endTransaction();
答案 1 :(得分:0)
$ DB->执行();
将此行放入for循环中。您正在绑定for循环中的值,这些值将绑定到语句并替换为数组中的最后一个元素。
然后在完成for循环之后,你调用$ db-> execute(),这将只将数组的最后一个值存储到表中