PHP将所有行作为数组获取

时间:2014-04-09 06:41:32

标签: php mysql

我试图从数据库列中获取所有行值,如下所示:

$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)。

我如何获得所有价值而不仅仅是第一个?

谢谢。

4 个答案:

答案 0 :(得分:2)

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

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

__

更新

好像你有一个PHP版本< 5.3安装。版本< 5.3没有mysqli_fetch_all()。你必须遵循以下选择:

  • 如果你有PHP> = 5.1,你可以使用PDOPDOStatement有一个方法fetchAll()
  • 如果您没有PHP> = 5.1(为什么?)或者您不能/不会使用PDO,则需要循环结果集...

...像这样:

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

答案 1 :(得分:1)

获取所有行的第一列:

$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];
}

答案 2 :(得分:0)

mysqli_fetch_assoc只会获取第一行。要在您耗尽所有行之前继续读取,请在while循环中使用mysqli_fetch_assoc。

答案 3 :(得分:-1)

在您的帖子中:$ 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++;
}
相关问题