Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.09.2020, 12:24
Аспирант
Отправить личное сообщение для riaron Посмотреть профиль Найти все сообщения от riaron
 
Регистрация: 16.08.2020
Сообщений: 53

не выполняется сортировка
Не выполняется сортировка
вот код
app.get('/smart/:sort', function(req, res) {
	var smartphopneList = [];
	var sort;
	var inp=[];
	// Connect to MySQL database.
	var connection = getMySQLConnection();
	connection.connect();
	if(!req.params.sort){
		sort='id';
	}else{
		sort=req.params.sort;
	}
inp.push(sort);
	// Do the query to get data.
	connection.query('SELECT `id`,`prod`,`name`,`description`,`photo`,`price` FROM `smartphone` ORDER BY ?', inp, function(err, rows, fields)
Ответить с цитированием
  #2 (permalink)  
Старый 14.09.2020, 07:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

И ошибок при этом не возвращается?

Сама MySQL не оперирует не именованными параметрами (?), этим занимается расширение. Я не знаю Node, как в нем это все работает и есть ли вообще такое, но обычно эти параметры нужно связать с данными запроса. Для не именованных параметров обязательное условие, это равенство количества не именованных параметров и данных запроса, а порядок следования данных должен соответствовать порядку их описания не именованными параметрами в запросе. При связывании описывается и тип данных, для каждого значения. Подставляемые в запрос не именованные параметры обрабатываются во время подготовления запроса, в котором затем будут сопоставлены переданные значения.

Во время выполнения подготовленного запроса значения определенные как string будут экранированы, а значения определенные как integer, double и blob будут приведены к этим типам. Это исключает sql-инъекцию во время запроса.

Но исключение инъекции не решает проблемы соответствия данных типам полей, то есть не будет возникать ошибок если данные не соответствуют, запрос успешно выполнится, а в базе будет "мусор". Для предотвращения этого данные пришедшие извне нужно подвергать фильтрации если недопустимы несоответствия, иначе в дальнейшем эти данные могут порождать ошибки или иные проблемы.

По крайней мере в данном запросе есть попытка обезопасить запрос в отличие от запроса в этой теме. Там что пришло, то отправили в запрос, по крайней мере не наблюдается ни экранирования, ни приведения типов, вообще ничего. Учтите, что если "прокатило", характер запроса не позволил выполнить имеющуюся в данных инъекцию, то это не означает, что она не сработает впоследствии. Запросы к базе могут использовать данные в ней как параметры запроса, и молчащие до поры до времени "грабли" в ней обязательно когда-то выстрелят.
Ответить с цитированием
  #3 (permalink)  
Старый 14.09.2020, 09:47
Аспирант
Отправить личное сообщение для riaron Посмотреть профиль Найти все сообщения от riaron
 
Регистрация: 16.08.2020
Сообщений: 53

https://metanit.com/web/nodejs/8.2.php
Ответить с цитированием
  #4 (permalink)  
Старый 14.09.2020, 10:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну о чем гласит документация?

const user = ["Tom", 29];

и в запросе

'.... VALUES(?, ?)'

То есть в вашем случае это должно быть

const user = [x];

где x, это принятое значение для сортировки, обрабатываются ли при этом типы и только ли так связываются данные с параметрами, бог его знает.

и в запросе

'.... ORDER BY ?'
Ответить с цитированием
  #5 (permalink)  
Старый 14.09.2020, 11:09
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

перепишите код с использованием switch case
манипулируя ORDER BY id ...
orm подставляют значения полей, но не названия полей обычно
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как-то странно работает код. Не выполняется целиком функция Yuriy-155 jQuery 7 22.11.2019 16:14
Почему выполняется блок else? DivMan Общие вопросы Javascript 2 10.03.2016 14:11
Говнокод)) Сортировка пузырьком. Lorines Ваши сайты и скрипты 3 03.10.2013 01:23
Не выполняется скрипт dump Общие вопросы Javascript 1 09.11.2012 17:49
Не выполняется внутри JQuery.post frundik Элементы интерфейса 3 14.08.2012 11:35