[英]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.