按逗号分隔列表排序,不带引号

问题描述 投票:0回答:2

需要按字段排序,使用逗号分隔列表

$sql = "select cat from steps group by cat order by field (cat, " . $str . ")";

以上仅在以下情况下才有效:

$str = 'lorem','ipsum','dolor'

但是我的

$str
lorem,ipsum,dolor
,即不带引号

如何获取带引号的

$str
或强制执行不带引号的
sql

php mysql
2个回答
3
投票

您需要引号,否则 MySQL 认为它们是列名,而不是文字字符串。

您可以使用如下代码添加它们:

$exp = explode(',', $str);
foreach ($exp as &$item) {
    $item = "'$item'";
}
$str = implode(',', $exp);

2
投票

您可以使用

FIELD()
代替 
FIND_IN_SET()
:

select cat from steps group by cat order by find_in_set(cat, '" . $str . "')
© www.soinside.com 2019 - 2024. All rights reserved.