Запрос php mysqli c формированием переменной

118
14 октября 2017, 20:09

Есть код:

$x[status][vip]     = 2;
$x[status][standard] = 1;
"SELECT 
@status_:= status AS status_, 
$x[status][@status_] AS level
FROM users"

В таблице users поле status имеет значение vip, соответственно level должен = 2, но в результате получаю ошибку по выше приведенному запросу.

Вопрос, возможно ли как то сформировать переменную $x[status][@status_] без ошибки?

Answer 1

Если Вы прописываете $['status'] в коде (а не берёте его из базы), то лучше всего будет просто сделать вот так:

SELECT
    `status` as `status_`,
    CASE `status`
        WHEN 'vip' THEN 2;
        WHEN 'standard' THEN 1;
    END as `level`
FROM `users`

Если $x['status'] берётся вдруг из базы - напишите откуда, можно будет сделать еще проще.

Добавлено пояснение: Как уже написал другой Александр в комментарии к вопросу:

Строки сперва обрабатываются php, а потом уже сформированный запрос отправляется в mysql

Поэтому у Вас и выдаётся ошибка. Фактически, Вы отправляли в базу вот такой запрос:

SELECT 
@status_:= status AS status_, 
Array[@status_] AS level
FROM users
READ ALSO
PHP unlink() не работает на сервере

PHP unlink() не работает на сервере

Здравствуйте,есть задача в определённом участке кода реализовать удаление файлика xml из директории,где находится indexphp

159
ошибка при установке Drupal

ошибка при установке Drupal

Поставил Drupal вот такой командой composer create-project drupal-composer/drupal-project:~80

273
Изменить картинку по нажатию на кнопку

Изменить картинку по нажатию на кнопку

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

256
Сборка драйвера QIBASE для QT проеекта

Сборка драйвера QIBASE для QT проеекта

Добрый день, возник такой вопрос над которым ломаю голову, уже второй день

229