簡體   English   中英

PHP將所有行作為數組獲取

[英]PHP get all rows as an array

我試圖從數據庫列中獲取所有行值,如下所示:

$products = mysqli_fetch_assoc(mysqli_query($con,"SELECT product_id FROM am_product"));
print_r($products);

期待得到像我這樣做的東西:

$products = array(1,2,3,4,5) 

首先,我可以在其他功能中使用它。 但相反,我只得到這個:數組([product_id] => 1)。

我怎樣才能獲得所有價值而不僅僅是第一個?

謝謝。

您可以將mysqli_fetch_all()array_values()一起使用:

$productIds = array_values(mysqli_fetch_all($result));

__

更新:

看起來你已經安裝了PHP版本<5.3。 版本<5.3沒有mysqli_fetch_all() 你必須遵循以下選擇:

  • 如果你有PHP> = 5.1,你可以使用PDO PDOStatement有一個方法fetchAll()
  • 如果你沒有PHP> = 5.1(為什么?)或者你不能/不會使用PDO你需要循環結果集...

... 像這樣:

$productIds = array();
while($product = mysqli_fetch_array($result, MYSQLI_NUM)) {
    $productIds []= $product[0];    
}

要獲取所有行的第一列:

$products = array_map('current', mysqli_fetch_all($result));

如果您有很多行,那么在迭代結果集時選擇每行的第一列會更加內存友好。 另外,在<5.3中你不能使用mysqli_fetch_all()

$result = mysqli_query($con,"SELECT product_id FROM am_product");
// assuming $result is fine
$products = array();
while (($row = mysqli_fetch_array($result, MYSQLI_NUM)) !== null) {
    $products[] = $row[0];
}

mysqli_fetch_assoc只會獲取第一行。 要在您耗盡所有行之前繼續讀取,請在while循環中使用mysqli_fetch_assoc。

在您的帖子中:$ products應重命名為$ product,以便更好地理解您的代碼並了解您的問題。 fetch_assoc()只返回一個元素並增加一個'指針'。 到達列表的末尾時,該函數將返回false。 這就是為什么你大多數時候使用while(fetch_assoc())為此目的。

也許這會有所幫助:

$entries = array();
while($entry = $result->fetch_assoc()) {
    foreach($entry as $key => $value) $entries[$i][$key] = $value;
    $i++;
}

暫無
暫無

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

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