gpt4 book ai didi

php - Mysql 没有按要求的顺序执行 select 语句

转载 作者:行者123 更新时间:2023-11-29 04:23:19 24 4
gpt4 key购买 nike

我有这个数组:

$keys = Array(79, 68, 80, 78, 71, 69, 77, 82, 83, 70, 76, 74, 75)

然后我使用这个数组在我的数据库中进行查询:

$dbh = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

$stmt = $dbh->prepare("SELECT *
FROM table
WHERE id IN (" . implode(',', array_map('intval', $keys)) . ")");

$stmt->execute();

但是回显结果,比如...

while( $row = $stmt->fetch() ) {
echo $row['id'] . '<br />';
}

...给我:

69
70
71
74
75
76
77
78
79
80
81
82
83

即结果按升序排序。但我需要像原始数组 $keys 一样对结果进行排序(它代表一个顶部列表)。这可能吗?

最佳答案

使用 IN 不会对结果进行排序。它只选择与您的查询匹配的记录。如果您希望结果按顺序排列,您需要在查询中添加一个 ORDER BY FIELD() 子句。

$keyString = implode(',', array_map('intval', $keys));
$stmt = $dbh->prepare("SELECT *
FROM table
WHERE id IN (" . $keyString . ")
ORDER BY FIELD(id, " . $keyString . ")");

关于php - Mysql 没有按要求的顺序执行 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392802/

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