Ошибка MySQL в NodeJS

Код NodeJS приведен ниже:

    app.get('/search', function(req, res){
    var keyword = req.query.q;
    con.query("SELECT Post_Title, Post_Icon, Post_Cont, Post_Author, Post_Date FROM Posts WHERE Post_Title LIKE '" + keyword + "' OR Post_Icon LIKE '" + keyword + "' OR Post_Cont LIKE '" + keyword + "' OR Post_Author LIKE '" + keyword + "' OR Post_Date LIKE '" + keyword + "' ORDER BY Post_Date ASC", function (err, result) {
    if (err){
    console.info("Error on DB SELECT.");
    console.info(err);
    tellSelectError(req, res);
}else{
    console.info("Database selected");
    console.info(result);
    /*res.render('index', {
        info: info,
        result: result
    });*/
    res.json(result);
    }
});
});

Он отправляет пустой json в клиентский браузер.

Скриншот загружен по адресу: https://i.stack.imgur.com/kpSDA.jpg

Пожалуйста помоги..... Этот код работает: SELECT * FROM Posts WHERE Post_ID = " + keyword, но я хочу использовать НРАВИТЬСЯ со всеми цветами Сообщения, за исключением Post_ID.

console.info (ошибка); не регистрирует ошибок.

Получил новости: Когда я меняю SQL на SELECT * FROM Posts, он правильно возвращает все необработанные данные, но SELECT Post_Title, Post_Icon, Post_Cont, Post_Author, Post_Date FROM Posts WHERE Post_Title LIKE '" + keyword + "' OR Post_Icon LIKE '" + keyword + "' OR Post_Cont LIKE '" + keyword + "' OR Post_Author LIKE '" + keyword + "' OR Post_Date LIKE '" + keyword + "' ORDER BY Post_Date ASC не работает должным образом.

это просто вопрос кавычек. Поскольку вы передаете строку в ключевом слове, вы должны заключить ее в кавычки

Lelio Faieta 05.06.2018 14:04
ключевое слово - переменная NodeJS.
user9850863 05.06.2018 14:06

Ключевое слово and должно быть заключено в кавычки, чтобы при преобразовании его в значение для анализа в SQL вы не столкнулись с этой проблемой.

Lelio Faieta 05.06.2018 14:08

Дай мне попробовать ...

user9850863 05.06.2018 14:09

попробуйте запустить запрос непосредственно в базе данных, чтобы увидеть, должен ли он возвращать какой-либо результат (путем повторения кода sql, созданного приложением, заменяя ключевое слово его значением)

Lelio Faieta 05.06.2018 15:38
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
5
36
1

Ответы 1

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

"SELECT Post_Title, Post_Icon, Post_Cont, Post_Author, Post_Date 
FROM Posts 
WHERE Post_Title LIKE '" + keyword + "' OR Post_Icon LIKE '" + keyword + "' OR Post_Cont LIKE '" + keyword + "' OR Post_Author LIKE '" + keyword + "' OR Post_Date LIKE '" + keyword + "' ORDER BY Post_Date ASC"

Примечание. LIKE - это оператор, который используется вместо = для поиска значения внутри поля. = будет пытаться найти полное поле. Для этого LIKE используйте подстановочный знак (%) в трех разных вариантах:

  • % keyword значение заканчивается ключевым словом;
  • ключевое слово% значение начинается с ключевого слова;
  • % keywords% значение где-то содержит ключевое слово

Если вы не используете подстановочный знак, использовать LIKE бесполезно.

Пробовал, и MySQL не возвращает ошибок, но если он правильный, он должен дать мне результат, но он дает пустой json.

user9850863 05.06.2018 14:16

Другие вопросы по теме