我有一个包含10个项目的数据库,所有这些项目都有金额(item_one,item_one_amount)。这就是表中的20行。
我想要做的是在php中绑定这两件事,项目ID与金额绑定。
不确定如何解决我的问题。 双重预告是一个好主意吗?
我的数据库结构也可能是个问题?我的想法是:我有10个不同的捆绑。它们中的每一个都具有不同的项目,其中具有不同数量的所述项目。项id_s从另一个表中获取,该表包含有关项
的所有信息My db:
FirstItem, SecondItem, ThirdItem, FourthItem, FifthItem,
SixthItem, SeventhItem, EighthItem, NinthItem, TenthItem,
FirstItemID, SecondItemID, ThirdItemID, FourthItemID, FifthItemID,
SixthItemID, SeventhItemID, EighthItemID, NinthItemID, TenthItemID,
first_item_amount, second_item_amount, third_item_amount, fourth_item_amount,
fifth_item_amount, sixth_item_amount, seventh_item_amount, eighth_item_amount, ninth_item_amount, tenth_item_amount
FROM Bundles
我的php尝试:
foreach ($all_ids as &$item_id) {
if ($item_id == 0){
break;
}
foreach ($all_item_amounts as &$item_amount) {
//do something
if ($item_amount == 0) {
break;
}
}
}
出于某种原因,我陷入了困境。
答案 0 :(得分:0)
使用包含所有列前缀的数组:
values=[1,2,3]
然后遍历查询结果的所有行,并在这些前缀上使用嵌套循环来获取正确分组中的所有列。
$nths = array('First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth', 'Seventh', 'Eighth', 'Ninth', 'Tenth');
但是,我建议您将设计标准化。而不是每行30列,将每个组放在一个单独的行中,$results = array();
foreach ($all_rows as $row) {
foreach ($nths as $prefix) {
$results[] = array('item' => $row[$prefix . 'Item'],
'itemid' => $row[$prefix . 'ItemID'],
'amount' => $row[strtolower($prefix) . '_item_amount']);
}
}
对于同一个包的所有行都是公共的。
bundleId
这种创建语法可能不适合SQL-Server,我的经验是使用MySQL。