Прежде всего, извините за формулировку вопроса.
У меня есть следующая таблица Testing
в базе данных SQLite:
| id | name | something_numerical |
|----|-------|---------------------|
| 1 | test1 | 100 |
| 2 | test2 | 500 |
| 3 | test3 | 1000 |
| 4 | test4 | 5000 |
| 5 | test5 | 10000 |
| 6 | test6 | 25000 |
Все запросы выполнены от 7.3.12-1+0~20191128.49+debian9~1.gbp24559b
В запросе используется следующий псевдоним (что, похоже, является проблемой)
something_numeric+100 AS modified_column
Запрос через PDO без заполнителей работает как ожидалось и возвращает строки 3 и 4.
SELECT *, something_numerical+100 AS modified_column
FROM Testing
WHERE modified_column BETWEEN 750 AND 7500
Запрос через PDO с заполнителями не возвращает строк и ошибок. (Я также пытался использовать ?
для приведения параметров с одинаковыми результатами)
SELECT *, something_numerical+100 AS modified_column
FROM Testing
WHERE modified_column BETWEEN :min_modified_column AND :max_modified_column
значения
$parameters = [
':min_modified_column'=>750,
':max_modified_column'=>7500
];
Без +100
для столбца something_numerical
, оба запроса работают как ожидается, верните 3 и 4.
Вот база данных SQLite, которая поможет в воспроизведении (при необходимости)
DROP TABLE IF EXISTS "Testing";
CREATE TABLE "Testing" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"name" text NOT NULL,
"something_numerical" integer NOT NULL
);
INSERT INTO "Testing" ("id", "name", "something_numerical") VALUES (1, 'test1', 100);
INSERT INTO "Testing" ("id", "name", "something_numerical") VALUES (2, 'test2', 500);
INSERT INTO "Testing" ("id", "name", "something_numerical") VALUES (3, 'test3', 1000);
INSERT INTO "Testing" ("id", "name", "something_numerical") VALUES (4, 'test4', 5000);
INSERT INTO "Testing" ("id", "name", "something_numerical") VALUES (5, 'test5', 10000);
INSERT INTO "Testing" ("id", "name", "something_numerical") VALUES (6, 'test6', 25000);
Спасибо за ваши ответы.