порядок по списку, разделенному комой без кавычек - PullRequest
0 голосов
/ 03 апреля 2020

нужно упорядочить по полю, используя список, разделенный запятой

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

вышеописанное работает, только если $str = 'lorem','ipsum','dolor'

, но мой $str равен lorem,ipsum,dolor т.е. без кавычек

как получить $str с кавычками или заставить выполнить sql без кавычек?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2020

Вам нужны кавычки, в противном случае MySQL считает, что это имена столбцов, а не буквальные строки.

Вы можете добавить их с помощью кода, подобного следующему:

$exp = explode(',', $str);
foreach ($exp as &$item) {
    $item = "'$item'";
}
$str = implode(',', $exp);
2 голосов
/ 03 апреля 2020

Вместо FIELD() вы можете использовать FIND_IN_SET():

select cat from steps group by cat order by find_in_set(cat, '" . $str . "')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...