Php 来自 mysql 的多维数组

Php multi-dimensional array from mysql

我有一个 mysql table 看起来像这样:

id | id_transaction | id_item    | 
1  |  it0001        | T0001      | 
2  |  it0001        | T0002      |
2  |  it0001        | T0003      |
3  |  it0002        | T0001      |
4  |  it0002        | T0003      |
5  |  it0003        | T0003      |
6  |  it0003        | T0004      |

我正在尝试构建一个最终看起来像这样的多维数组:

Array
(
    array('T0001','T0002','T0003'),

    array('T0001','T0003'),

    array('T0003','T0004'),

);

我正在使用 select 查询:

$result = mysql_query("SELECT id_item,id_transaction from transaction_item ")or die("<br/><br/>".mysql_error());

有人知道怎么做吗?

以这种方式使用GROUP_CONCAT

SELECT id_transaction, GROUP_CONCAT(id_item)  
FROM transaction_item
GROUP BY id_transaction

这将导致以下结果:

+----------------+-------------------+
| id_transaction | id_item           |
+----------------+-------------------+
| it001          | T0001,T0002,T0003 |
+----------------+-------------------+
| it002          | T0001,T0003       |
+----------------+-------------------+
| it003          | T0003,T0004       |
+----------------+-------------------+

然后您可以使用 php 的 explode() 按以下方式创建数组:

$result = mysqli_query($conn, $sql_query);

while($row = mysqli_fetch_assoc($result)) {
    $final[] = explode(',', $row["id_item"]);
}

print_r($final);

以这种方式进行操作会给您带来 更快的 结果,因为 PHP 只会迭代 3 次来构建您的数组。

1.Don不使用 mysql_* 它现在已被弃用+删除。为此

使用 mysqli_*PDO

2.You查询执行后没有做任何事情。

A mysqli_*版本代码为:-

 <?php
     $dbhost = 'localhost'; //change credentails
     $dbuser = 'root';//change credentails
     $dbpass = '';//change credentails
     $dbname = 'TUTORIALS';//change credentails
     $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);

     if(! $conn ) {
        die('Could not connect: ' . mysqli_error());
     }
     $sql = 'SELECT id_item,id_transaction from transaction_item';
     $result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
     $final_array = array();
     if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
           $final_array[$row['id_transaction']][] = $row['id_item'];
        }
        echo "<pre/>";print_r(array_values($final_array));
     } else {
        echo "0 results";
     }
     mysqli_close($conn);

?>