簡體   English   中英

從數據庫中獲取值並在數組中顯示結果

[英]fetch values from database and display result in array

我有一個看起來像這樣的購物車桌

id  catid  catname  userid  productid  prodimg  prodname   prodsize   prodcost  quantity    datee       timee     totalamount
1    1      CN1      1        1         ABC       P1        small       10        1        3/10/2015    10:00am      10       
2    1      CN1      1        1         ABC       P1        medium      20        1        4/10/2015    10:00am      20  
3    1      CN1      1        1         ABC       P1        large       30        1        3/10/2015    10:00am      30  
4    1      CN1      1        1         ABC       P1        perpiece    5         1        3/10/2015    10:00am      5   
5    1      CN1      1        2         CDF       P2        small       6         1        3/10/2015    10:00am      6       
6    1      CN1      1        2         CDF       P2        large       14        1        4/10/2015    10:00am      14  
7    1      CN1      2        1         ABC       P1        small       10        2        3/10/2015    10:00am      20        

我希望以特定的方式在數組中顯示其數據(根據userid),我想要的結果數組看起來像這樣

Array
(
    [0] => Array
        (
            [catid] => 1
            [catname] => CN1
            [userid] => 1
            [productid] => 1
            [prodimg] => ABC
            [prodname] => P1
            [prodsize] => Array
                (
                    [0] => small
                    [1] => medium
                    [2] => large
                    [3] => perpiece
                )
            [prodcost] => Array
                (
                    [0] => 10
                    [1] => 20
                    [2] => 30
                    [3] => 5
                )   
            [quantity] => Array
                (
                    [0] => 1
                    [1] => 1
                    [2] => 1
                    [3] => 1
                )
            [datee] => Array
                (
                    [0] => 3/10/2015
                    [1] => 4/10/2015
                    [2] => 3/10/2015
                    [3] => 3/10/2015
                )
            [timee] => Array
                (
                    [0] => 10:00am
                    [1] => 10:00am
                    [2] => 10:00am
                    [3] => 10:00am
                )   
            [totalamount] => Array
                (
                    [0] => 10
                    [1] => 20
                    [2] => 30
                    [3] => 5
                )
        )

    [1] => Array
        (
            [catid] => 1
            [catname] => CN1
            [userid] => 1
            [productid] => 2
            [prodimg] => CDF
            [prodname] => P2
            [prodsize] => Array
                (
                    [0] => small
                    [1] => 0
                    [2] => large
                    [3] => 0
                )
            [prodcost] => Array
                (
                    [0] => 6
                    [1] => 0
                    [2] => 14
                    [3] => 0
                )   
            [quantity] => Array
                (
                    [0] => 1
                    [1] => 0
                    [2] => 1
                    [3] => 0
                )
            [datee] => Array
                (
                    [0] => 3/10/2015
                    [1] => 0
                    [2] => 4/10/2015
                    [3] => 0
                )
            [timee] => Array
                (
                    [0] => 10:00am
                    [1] => 0
                    [2] => 10:00am
                    [3] => 0
                )   
            [totalamount] => Array
                (
                    [0] => 6
                    [1] => 0
                    [2] => 14
                    [3] => 0
                )
        )
)    

我使用的代碼是

$userid = $_REQUEST['userid'];

$sql= "SELECT catid, catname, productid, prodimg, GROUP_CONCAT(prodsize ORDER BY id ASC) as prodsize,  GROUP_CONCAT(prodcost ORDER BY id ASC) as prodcost, GROUP_CONCAT(quantity ORDER BY id ASC) as quantity, GROUP_CONCAT(datee ORDER BY id ASC) as datee,  GROUP_CONCAT(timee ORDER BY id ASC) as timee, 
      GROUP_CONCAT(totalamount ORDER BY id ASC) as totalamount   from cart WHERE userid ='$userid'";

        $result = mysqli_query($con, $sql);
        if (mysqli_num_rows($result) > 0) 
            {
                while($result = mysqli_fetch_assoc($result)) 
                    {
                        echo "<pre>";
                        print_r($result);
                        echo "</pre>";
                    }
            }

但它沒有以我想要的方式顯示數組,它顯示了以下數組

Array
(
    [0] => Array
        (
            [catid] => 1
            [catname] => CN1
            [productid] => 1
            [prodimg] => ABC
            [prodsize] => small,medium,large
            [prodcost] => 10,20,30
            [quantity] => 1,1,1,1
            [datee] => 3/10/2015,4/10/2015,3/10/2015,3/10/2015
            [timee] => 10:00am,10:00am,10:00am,10:00am
            [totalamount] => 10,20,30,5
        )

)

任何人都可以告訴如何以正確的方式獲得陣列。 這個數組的一個更重要的方面是prodsize中的數組應該是固定的,即如果prod尺寸小,那么它將被存儲在[0]中,中[1]中,大中[2]和perpiece [3]中。 ],如果其中一個值不存在那么它應該是0和prodcost,數量datee和timee也將遵循相同的方法

我認為您需要al算法來重新格式化數據庫中的結果。 我可以看到你想要的只是得到那些連接的結果並將它們分開在獨立的數組鍵中。

我無法嘗試,但我懷疑你可能需要或不需要$ i索引來分配元素。 試試兩個。

這是您可能實現的方式:

$formatedResult = [];
$i = 0;
while($result = mysqli_fetch_assoc($result)) 
{
    $formatedResult = $result;
    $formatedResult[$i]['prodsize'] = explode(',', $result[$i]['prodsize']);
    $formatedResult[$i]['prodcost'] = explode(',', $result[$i]['prodcost']);
    $formatedResult[$i]['quantity'] = explode(',', $result[$i]['quantity']);
    $formatedResult[$i]['datee'] = explode(',', $result[$i]['datee']);
    $formatedResult[$i]['timee'] = explode(',', $result[$i]['timee']);
    $formatedResult[$i]['totalamount'] = explode(',', $result[$i]['totalamount']);
    //Repeat with the other elements with similar formating
    $i++;
}

echo '<pre>';
print_r($formatedResult); //Now shows the array you want
echo '</pre>';

要獲取數組中sql select query的所有結果,只需使用fetch all function,如下所示

$userid = $_REQUEST['userid'];

$sql= "SELECT catid, catname, productid, prodimg,
       GROUP_CONCAT(prodsize ORDER BY id ASC) as prodsize,          

       GROUP_CONCAT(prodcost ORDER BY id ASC) as prodcost,
       GROUP_CONCAT(quantity ORDER BY id ASC) as quantity, 
       GROUP_CONCAT(datee ORDER BY id ASC) as datee, 
       GROUP_CONCAT(timee ORDER BY id ASC) as timee, 
       GROUP_CONCAT(totalamount ORDER BY id ASC) as totalamount   
       from cart WHERE userid ='$userid'";

        $result = mysqli_query($con, $sql);
        // Fetch all
        $r=mysqli_fetch_all($result,MYSQLI_ASSOC);
        print_r($r);
        // Free result set
        mysqli_free_result($result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM