[英]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()
。 你必須遵循以下選擇:
PDO
。 PDOStatement
有一個方法fetchAll()
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.