gpt4 book ai didi

php - 在 PHP 中使用 mysqli 创建子查询以按升序获取数组最后 10 个结果

转载 作者:行者123 更新时间:2023-11-29 01:55:02 25 4
gpt4 key购买 nike

我认为这很简单,但我很难弄清楚为什么这不会填充数据数组。

这个简单的查询工作正常:

$queryPrice = "SELECT price FROM price_chart ORDER BY id ASC LIMIT 50";
$resultPrice = mysqli_query($conn, $queryPrice);
$data = array();
while ($row = mysqli_fetch_array($resultPrice)) {
$data[] = $row[0];
}

但我希望它按升序选择最后 10 个结果。我在其他 SO 问题上发现使用子查询,但我尝试的每个示例都没有输出也没有错误 ??

尝试了以下方法,不起作用:

$queryPrice = "SELECT * FROM (SELECT price FROM price_chart ORDER BY id DESC LIMIT 10) ORDER BY id ASC";
$resultPrice = mysqli_query($conn, $queryPrice);
$data = array();
while ($row = mysqli_fetch_array($resultPrice)) {
$data[] = $row[0];
}

我也试过再次指定表名并使用 IN,也不起作用:

$queryPrice = "SELECT price FROM price_chart IN (SELECT price FROM price_chart ORDER BY id DESC LIMIT 10) ORDER BY id";
$resultPrice = mysqli_query($conn, $queryPrice);
$data = array();
while ($row = mysqli_fetch_array($resultPrice)) {
$data[] = $row[0];
}

在这两个示例中,我的数组都是空白的,而不是返回最后 10 个结果,并且没有错误,所以我一定是做错了子查询,它返回了 0 行。

最佳答案

子查询不选择 id 列,因此您不能在外部查询中按它排序。此外,MySQL 要求您在 FROMJOIN 子句中使用子查询时分配别名。

$queryPrice = "SELECT * 
FROM (SELECT id, price
FROM price_chart
ORDER BY id DESC LIMIT 10
) x ORDER BY id ASC";
$resultPrice = mysqli_query($conn, $queryPrice) or die (mysqli_error($conn));
$data = array();
while ($row = mysqli_fetch_assoc($resultPrice)) {
$data[] = $row['price'];
}

如果您在查询失败时调用 mysqli_error(),您会收到这些错误的通知。

关于php - 在 PHP 中使用 mysqli 创建子查询以按升序获取数组最后 10 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31360580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com