代码之家  ›  专栏  ›  技术社区  ›  user6818018

使用vanilla PHP或EspressionEngine在数据库中推送数组

  •  0
  • user6818018  · 技术社区  · 8 年前

    我打印了一个数组:

    echo "<pre>";
    print_r($obj);
    die();
    

    它看起来像:

    Array
    (
        [0] => Store\Model\OrderShippingMethod Object
            (
                [id] => 0
                [name] => ExpeditedParcel
                [amount] => 13.04
                [days] => 1
                [class] => CanadaPost
            )
    
        [1] => Store\Model\OrderShippingMethod Object
            (
                [id] => 1
                [name] => Priority
                [amount] => 25.71
                [days] => 1
                [class] => CanadaPost
            )
    
        [4] => Store\Model\OrderShippingMethod Object
            (
                [id] => 4
                [name] => PurolatorExpress9AM
                [amount] => 56.57
                [days] => 1
                [class] => Purolator
            )
    )
    

    我希望将我的数组推入数据库,但我不太确定该怎么做。我的第一次尝试生成了一个非常奇怪的数据库,其中包含大量空值。。实际上,所有的值都是空的。

    我对ExpressionEngine使用了一个预先准备好的语句,如下所示:

    ee()->db->insert(
                'exp_easypost_carriers',
                array(
                    'carrier_id'    => $obj['id'],
                    'carrier_name'  => $obj['name'],
                    'site_id'       => 3,
                    'adjustment_id' => 1,
                    'rate'          => $obj['amount'],
                    'days'          => $obj['days'],
                )
            );
    

    但实际上,我可以在PHP中使用一个普通的insert into语句:

    $sql = "INSERT INTO exp_easypost_carriers (carrier_id, carrier_name, site_id, adjustment_id, rate, days)
    VALUES ($obj['id'], $obj['name'], 3, 1, $obj['amount'], $obj['days']";
    

    尽管如此,我还是更喜欢使用ExpressionEngine的语句,因为我在那个环境中工作,它与vanilla PHP语句非常接近。但它不起作用。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Webkudu    8 年前

    您处理的是对象数组,而不是数组。因此,访问数据的方法是,例如,$obj->id.尝试以下语句:

    ee()->db->insert(
            'exp_easypost_carriers',
            array(
                'carrier_id'    => $obj->id,
                'carrier_name'  => $obj->name,
                'site_id'       => 3,
                'adjustment_id' => 1,
                'rate'          => $obj->amount,
                'days'          => $obj->days
            )
    );