gpt4 book ai didi

php - 选择最后 5 条记录并在 PDO 中升序排序

转载 作者:可可西里 更新时间:2023-11-01 08:45:09 25 4
gpt4 key购买 nike

我想选择表中的最后 5 条记录并将它们升序排序。首先我想说我知道这个问题的解决方案已经在 stackoverflow 上提供(比如 Select last 20 order by ascending - PHP/MySQL )。我遇到的问题是让它们在 PDO 中工作。这是我的代码:

$pdo = new PDO('mysql:host=localhost;dbname=somedb;port=3306', 'someuser', 'somepassword');
$stmval = $pdo -> prepare("SELECT * FROM (SELECT ID, col1, col2, col3 FROM table1 WHERE `col4` = 1 ORDER BY col3 DESC LIMIT 5) tmp ORDER BY col3 ASC" );
$stmval -> execute();
while($somesome = $stmval -> fetch())
{
echo $somesome ['col1'].",".$somesome ['col2'].",".$somesome ['col3'];
}

所以基本上它可以工作,直到我在 prepare() 中添加额外的 SELECT * FROM (SELECT [...])我如何选择表中的最后 5 个元素并使用 PDO 对它们进行升序排序?

假设我有数组:1,2,3,4,5,6,7,8,9,10我通过 mysql 选择最后 3 个元素,所以我需要使用 DESC 排序。我有:10,9,8现在我接受它并让它上升,所以最终结果就是我想要的:8,9,10问题是每当我尝试修改代码的第二行时:

stmval = $pdo -> prepare("SELECT [...] ORDER BY col3 DESC" );

stmval = $pdo -> prepare("SELECT * FROM (SELECT [...] ORDER BY col3 DESC) ORDER  BY col3 ASC" );

它只是出于某种原因无法工作。

最佳答案

我无法复制您的发现。

在 MySQL 中:

SELECT * 
FROM
( SELECT ID
, col1
, col2
, col3
FROM table1
WHERE `col4` = 1
ORDER
BY col3 DESC LIMIT 5
) tmp
ORDER
BY col3 ASC;
+----+------+------+------+
| ID | col1 | col2 | col3 |
+----+------+------+------+
| 9 | 27 | 13 | 81 |
| 10 | 68 | 97 | 82 |
| 23 | 22 | 71 | 88 |
| 6 | 35 | 81 | 99 |
| 16 | 77 | 46 | 100 |
+----+------+------+------+

在 PHP 中:

27,13,81
68,97,82
22,71,88
35,81,99
77,46,100

关于php - 选择最后 5 条记录并在 PDO 中升序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31133851/

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