Всем привет! Написал выборку с MySQL таблицы. Должны выводиться значения больше $id2 и меньше $id1 Но выводяться все id Где у меня ошибка в WHERE? Код (Text): $result = $sql->select([ 'table' => 'shop_order', 'where' => [("id>$id1") AND ("id<$id2")], 'orderby' => ['id', 'desc'] ]);
Так у вас в where логическая операция языка PHP, а не инструкция фильтрации для запроса. PHP: var_dump([("id>$id1") AND ("id<$id2")]);
Для начала где ты увидел вывод ошибок? PHP: array(1) { [0]=> bool(true) } это ? Ты var_dump использовал чтобы вывести результат как дебаг при программировании. И второй случай это значит что ты получил булевое значение в [ массиве ] Не то что ты хотел - строковое представление
@Johnboss, откуда мы знаем, что за приблудой ты пользуешься для составления запросов. Это не стандартные PDO и mysqli, это какой-то сторонний построитель запросов. Читай его документацию.
И чё не поулчается да? Как же так то. Бред, php компилятор не прав, так должно получатся! Пробуйте ещё раз. Уберите ещё ковычки они там явно лишние. Я думаю их уберёте и всё получится!
Автор, попробуй руками запрос написать. Вот честно, телодвижений столько же, сколько с твоим билдером.
может лучше переписать вот это Код (Text): 'where' => [("id>$id1") AND ("id<$id2")], на вот это? Код (Text): 'where' => "id > $id1 AND id < $id2", Выше правильно сказали, нужно читать специфику вашего построителя.
Ну вообще, php. Другое дело, что чел не понимает, что на нём делает, а так булевы операции над строками вполне допустимы
@mkramer хочешь сказать что в php в массив можно писать коверкая синтаксис написания мкассивов и php это съедает ? НУ расскажи мне. Я не про т очто там опирации. Я про то как он составил вообще это. То что у него банальная ошибка. Вас не корёжет что он не помечаая что это за тип данных пихает просто не понятно что в массив. PHP: 'where' => ?[? ????("id>$id1")???? ????AND ????? ????("id<$id2")???], --- Добавлено --- то есть он указывает что это массив.А внутрь ложит строку.... Не указывая что это строка! Тут ошибка синтаксиса! Добрый день!
Ты упрлс чтоли? Где там коверканье? Там выражение, результат которого и уйдет в массив. --- Добавлено --- ты сам-то понимаешь, что пишешь? Остап, остановись. Отдышись. Посмотри внимательнее. --- Добавлено --- Конструкция PHP: [("id>$id1") AND ("id<$id2")] Означает: 1) Создай строку "id>$id1", подменив $id1 на значение одноименной переменной; 2) Создай строку "id<$id2", подменив $id2 на значение одноименной переменной; 3) Проведи между этими строками логическую операцию AND; 4) Положи результат этой операции в ячейку массива.