只将数组的单个项插入数据库

时间:2018-02-13 08:57:16

标签: php mysql pdo

我有一个包含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();

2 个答案:

答案 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(),这将只将数组的最后一个值存储到表中