【发布时间】:2015-07-11 17:40:55
【问题描述】:
我有一个像这样的“JSON”格式的数据:
{
"email": "john@john.fr",
"line_items": [
{
"sku": "123456789",
"price": "0.67",
"price_with_tax": "4.00",
"tax_lines": [
{
"title": "tax010",
"rate": 0.01,
"price": "1.11"
},
{
"title": "tax00200",
"rate": 0.02,
"price": "2.22"
}
]
},
{
"sku": "012345666",
"price": "1.67",
"price_with_tax": "5.00",
"tax_lines": [
{
"title": "tax0003000",
"rate": 0.03,
"price": "3.33"
}
]
}
]
}
我想通过 PDO::prepare 将它放入我的数据库 (MySql)。我的以下 sql 查询有效,但第二 line_items 在 Mysql 中没有很好的价值:
第一项 :::: 物有所值
email:john@john.fr
sku:123456789
price:0.67
price_with_tax:4.00
price_tax1:1.11
price_tax2:2.22
第二项 ::::
email:john@john.fr
sku:012345666
price:1.67
price_with_tax:5.00
错误的值 ::::
price_tax1:1.11
price_tax2:2.22
我怎样才能说它物有所值?
这是我的代码:
$dataDecode = json_decode($jsondata);
$email = $dataDecode->email;
try
{
$dtbs = new PDO($dsn_dev, $pdo_user, $pdo_password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
die('Error : ' . $e->getMessage());
}
try
{
foreach ($dataDecode->line_items as $obj)
{
$var_sku = $obj->sku;
$var_price = $obj->price;
$var_price_with_tax = $obj->price_with_tax;
$taxNewArray = array();
foreach ($dataDecode->line_items[0]->tax_lines as $obj2)
{
array_push($taxNewArray , $obj2);
}
$val1st = array_shift($taxNewArray);
$val2nd = array_pop ($taxNewArray);
$var_tax1 = $val1st->price;
$var_tax2 = $val2nd->price;
$stmt = $dtbs->prepare("INSERT INTO $tabledata ($mysql_email, $mysql_sku, $mysq_price, $mysql_price_with_tax, $mysql_price__tax1___line_items, $mysql_price__tax2___line_items)
VALUES (:email, :sku, :price, :price_with_tax, :price_tax1, :price_tax2)");
$stmt->execute(array(':email'=>$email,
':sku'=>$var_sku,
':price'=>$var_price,
':price_with_tax'=>$var_price_with_tax,
':price_tax1'=>$var_tax1,
':price_tax2'=>$var_tax2
));
}
}
catch(Exception $e)
{
throw $e;
}
你有什么想法吗?
【问题讨论】:
-
$val2nd = array_pop($taxNewArray)仅在tax_lines中至少有两个条目时才有效。第二行项目只有一个税行。 -
嗨,Barmar,我必须做什么?有时,我们有两个条目,有时我们只有一个:这取决于项目...
-
使用
if语句测试是否有第二个条目。 -
带有计数功能的if语句?