Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据库选择php_Php_Sql Server - Fatal编程技术网

数据库选择php

数据库选择php,php,sql-server,Php,Sql Server,我有一个数据库,表中有10个项目,所有这些项目都有金额(项目1,项目1,金额)。表中有20行 我想做的是在php中绑定这两件事,项目id和金额 我不知道如何解决我的问题。 双人间是个好主意吗 我的数据库结构也可能是个问题?我的想法是:我有10个不同的包。每一个都有不同的物品,其中所述物品的数量不同。我从另一个表中获取的项目id,该表包含该项目的所有信息 My db: FirstItem, SecondItem, ThirdItem, FourthItem, FifthItem,

我有一个数据库,表中有10个项目,所有这些项目都有金额(项目1,项目1,金额)。表中有20行

我想做的是在php中绑定这两件事,项目id和金额

我不知道如何解决我的问题。 双人间是个好主意吗

我的数据库结构也可能是个问题?我的想法是:我有10个不同的包。每一个都有不同的物品,其中所述物品的数量不同。我从另一个表中获取的项目id,该表包含该项目的所有信息

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;
    } 
}

 }

由于某些原因,我陷入了循环。

使用一个包含所有列前缀的数组:

$nths = array('First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth', 'Seventh', 'Eighth', 'Ninth', 'Tenth');
然后循环查询结果的所有行,并在这些前缀上使用嵌套循环以获得正确分组中的所有列

$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']);
    }
}
但是,我建议您规范化您的设计。不是每行30列,而是将每个组放在一个单独的行中,使用一个
bundleId
,这是同一个bundle的所有行所共有的

CREATE TABLE Bundles (
    BundleID INT,
    ItemID INT, -- Foreign key to Items table
    Amount INT,
    PRIMARY KEY (BundleID, ItemID)
);

这种创建语法可能不完全适合SQL Server,我的经验是使用MySQL。

为什么是20行?应该是10行2列,对吗?你能显示表格内容吗?你说的“绑定这两个东西”是什么意思?我想你只需要旋转表格,看看这就是问题所在,我计划用数据填充表格:某个包包含10个不同数量的项目,不同的包可以有不同值的不同项目,因此,10行表示项目名称,10行表示金额。通过将这2行绑定在一起,我的意思是每个项目都应该将其值绑定到HIM。我不理解您的数据库返工想法,您可以将其扩展一点吗?我添加了一个建议的模式。但在这种情况下,金额是针对捆绑包的,而不是每个项目的。否?这正是我想要实现的,捆绑包中的10个项目中的每一个都有不同的金额。您的表有
第一个项目金额
第二个项目金额
,等等。所以它是针对每个项目的。