我试图从数据库列中获取所有行值,如下所示:
$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)。
我如何获得所有价值而不仅仅是第一个?
谢谢。
答案 0 :(得分:2)
您可以将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];
}
答案 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++;
}