Ошибка получения данных mysql с условием IF в php [duplicate]

Вы можете использовать итеративный подход, используя объект по умолчанию, если свойство не существует.

function setValue(object, key, value) {
    var path = key.split('.'),
        last = path.pop();

    path.reduce(function (o, k) {
        return o[k] = o[k] || {};
    }, object)[last] = value;
}

var translations = [{ key: "app_name", val: "foo" }, { key: "meta.title", val: "foo" }, { key: "meta.lang", val: "bar" }, { key: "teaser.foo.headline", val: "foo" }, { key: "teaser.foo.subline", val: "bar" }],
    object = {};

translations.forEach(function (o) {
    setValue(object, o.key, o.val);
});

console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }

12
задан John Woo 19 January 2013 в 13:34
поделиться

2 ответа

Во-первых, вы не можете использовать ALIAS в предложении WHERE. Вы используете столбец

SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
FROM   users 
WHERE  SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'

. Причина такова: порядок работы: SQL,

  • FROM clause
  • WHERE clause
  • Предложение GROUP BY
  • Предложение HAVING
  • Предложение SELECT
  • Предложение ORDER BY

ALIAS имеет место в предложении SELECT, которое находится перед предложением WHERE.

, если вы действительно хотите использовать псевдоним, заверните его в подзапрос,

SELECT *
FROM
    (
        SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
        FROM   users
    ) s
WHERE   val  = '15'
21
ответ дан John Woo 27 August 2018 в 03:17
поделиться

val не определен, его просто псевдоним .do, как это

   SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
   FROM   users 
   WHERE  SUBSTRING(rating, INSTR(rating,',') +1, +2) = 15
2
ответ дан echo_Me 27 August 2018 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: