首页 > 解决方案 > 为什么当我使用 foreach 时我的代码只向 DB 插入一个

问题描述

我需要使用foreach将数据插入数据库但是我的代码只插入最后一个,请帮我找出原因?

发布数据

{
"APIPassword": "Test",
"Method": "Transfer",
"Data": [
    {
        "Account": "Test01",
        "Amount": 100,
        "TransactionNo": "Test1",
        "dbID": "Bet1"
    },
    {
        "Account": "Test02",
        "Amount": -100,
        "TransactionNo": "Test2",
        "dbID": "Bet2"
    }
]}

我的代码

$apiPassword = $data['APIPassword'];
$method = $data['Method'];
$datas = $data['Data'];

$db = new db();

foreach ($datas as $data) {
    $db->userId = '1';
    $db->account = $data['Account'];
    $db->amount = (float) $data['Amount'];
    $db->transactionNo = $data['TransactionNo'];
    $db->dbID = $data['dbID'];
    $db->save();
}

提交时的结果

"Account": "Test02",
    "Amount": -100,
    "TransactionNo": "Test2",
    "db": "Bet2"

标签: phpphalconphalcon-orm

解决方案


您需要在 for 循环中每次实例化一个新的 db 对象,在您当前的代码中,您在循环的每次迭代中都使用相同的对象。

将您的代码更改为:

$apiPassword = $data['APIPassword'];
$method = $data['Method'];
$datas = $data['Data'];

foreach ($datas as $data) {
    $db = new db();
    $db->userId = '1';
    $db->account = $data['Account'];
    $db->amount = (float) $data['Amount'];
    $db->transactionNo = $data['TransactionNo'];
    $db->dbID = $data['dbID'];
    $db->save();
}

推荐阅读