需要按字段排序,使用逗号分隔列表
$sql = "select cat from steps group by cat order by field (cat, " . $str . ")";
以上仅在以下情况下才有效:
$str = 'lorem','ipsum','dolor'
但是我的
$str
是lorem,ipsum,dolor
,即不带引号
如何获取带引号的
$str
或强制执行不带引号的sql
?
您需要引号,否则 MySQL 认为它们是列名,而不是文字字符串。
您可以使用如下代码添加它们:
$exp = explode(',', $str);
foreach ($exp as &$item) {
$item = "'$item'";
}
$str = implode(',', $exp);
您可以使用
FIELD()
代替
FIND_IN_SET()
:
select cat from steps group by cat order by find_in_set(cat, '" . $str . "')