Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 52

Как вернуть данные из таблицы MySQL функцией?

27.05.2020, 16:14. Показов 5772. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне необходимо сделать запрос на сервер MySQL
SQL
1
SELECT * FROM users WHERE gid = ? AND id = ?
вместо вопросительных знаков подставляется два необходимых мне айди. Я пытался передать полученные данные из таблицы в переменную, но она возвращает всегда сам запрос, а не полученные данные из таблицы.
JavaScript
1
2
3
4
function test_query(gid,id) {
    let query = connection.query("SELECT * FROM users WHERE gid = ? AND id = ?", [gid,id]);
    return console.log(query);
}
Но выводит это:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Query {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  next: null,
  sql: "SELECT * FROM users WHERE gid = '704045012823834667' AND id = '590941225096314880'",
  values: [ '704045012823834667', '590941225096314880' ],
  _queryOptions: {
    rowsAsArray: false,
    sql: 'SELECT * FROM users WHERE gid = ? AND id = ?',
    values: [ '704045012823834667', '590941225096314880' ]
  },
  namedPlaceholders: false,
  onResult: [Function],
  _fieldCount: 0,
  _rowParser: null,
  _fields: [],
  _rows: [],
  _receivedFieldsCount: 0,
  _resultIndex: 0,
  _localStream: null,
  _unpipeStream: [Function],
  _streamFactory: undefined,
  _connection: null,
  [Symbol(kCapture)]: false
}
Как же мне тогда вытащить данные из таблицы?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2020, 16:14
Ответы с готовыми решениями:

MySQL. Как вернуть одно и значений поля таблицы родителя?
Суть в аттатче. Табличка с расписанием для нескольких групп. Думал, думал и зашел в тупик — "А может я сделал не оптимизацию, а...

Как взять данные из таблицы в MySQL?
Как взять данные из таблицы? Как писать запросы внутри кода? Может у кого есть либо пример, либо книга, где описано подробно?

Как прочитать данные из таблицы MySQL
mysql_query ("INSERT INTO users VALUES ('NULL','$username','$password','$email')") or die (mysql_error()); C помощью функции...

8
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
27.05.2020, 16:43
Dragone, метод connection.query принимает второй аргумент - коллбек. В нём и будет результат запроса.
Почитайте https://metanit.com/web/nodejs/8.2.php
0
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 52
27.05.2020, 20:18  [ТС]
Цитата Сообщение от Iverycool Посмотреть сообщение
Dragone, метод connection.query принимает второй аргумент - коллбек. В нём и будет результат запроса.
Почитайте https://metanit.com/web/nodejs/8.2.php
А как же мне вытащить от туда необходимое значение? Мне нужно будет ещё взаимодействовать с этим значением вне запроса.
0
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
27.05.2020, 20:28
Dragone, можно так:
JavaScript
1
2
3
4
5
6
async function test_query(gid,id) {
  let res = await new Promise((res, rej) =>
    connection.query(`SELECT * FROM users WHERE gid = ${gid} AND id = ${id}`,
    (err, results) => err ? rej(err) : res(results));
  return console.log(res);
}
0
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 52
27.05.2020, 21:55  [ТС]
Цитата Сообщение от Iverycool Посмотреть сообщение
Dragone, можно так:
JavaScript
1
2
3
4
5
6
async function test_query(gid,id) {
  let res = await new Promise((res, rej) =>
    connection.query(`SELECT * FROM users WHERE gid = ${gid} AND id = ${id}`,
    (err, results) => err ? rej(err) : res(results));
  return console.log(res);
}
Этот код рабочий, да. Но когда дело доходит до передачи значения в переменную, то выводит НЕ нужное мне значение, а
JavaScript
1
Promise { <pending> }
То есть такой код который основан на том что ты написал:
JavaScript
1
2
3
4
5
6
7
8
async function getMessages(gid,id) {
  let res = await new Promise((res, rej) =>
    connection.query(`SELECT * FROM users WHERE gid = ${gid} AND id = ${id}`,
    (err, results) => err ? rej(err) : res(results));
  return res[0].messages;
}
let messages = getMessages(gid,id);
console.log(messages);
выводит не то.
Возможно я кажусь тупым, но я не понимаю что такое promise, async и как они используются.
0
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
27.05.2020, 22:05
Лучший ответ Сообщение было отмечено Dragone как решение

Решение

Dragone, должно быть:
JavaScript
1
2
3
4
5
6
7
8
9
10
(async(){
async function getMessages(gid,id) {
  let res = await new Promise((res, rej) =>
    connection.query(`SELECT * FROM users WHERE gid = ${gid} AND id = ${id}`,
    (err, results) => err ? rej(err) : res(results));
  return res[0].messages;
}
let messages = await getMessages(gid,id);
console.log(messages);
})();
1
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 52
27.05.2020, 23:07  [ТС]
Цитата Сообщение от Iverycool Посмотреть сообщение
Dragone, должно быть:
JavaScript
1
2
3
4
5
6
7
8
9
10
(async(){
async function getMessages(gid,id) {
  let res = await new Promise((res, rej) =>
    connection.query(`SELECT * FROM users WHERE gid = ${gid} AND id = ${id}`,
    (err, results) => err ? rej(err) : res(results));
  return res[0].messages;
}
let messages = await getMessages(gid,id);
console.log(messages);
})();
Это работает.
Не сочти за наглость, но как мне выполнить сразу два запроса в двух функциях в одном async?
Мне нужно обработать одно значение из бд, но для этого нужно второе значение из бд, но его получить нельзя потому что после первого запроса соединение с бд закрывается автоматически (я сам не знаю почему).
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
28.05.2020, 01:30
Dragone, вы можете использовать сразу Promise версию: https://github.com/sidorares/n... se-wrapper

Цитата Сообщение от Dragone Посмотреть сообщение
первого запроса соединение с бд закрывается автоматически
покажите код как создается соединение

Цитата Сообщение от Dragone Посмотреть сообщение
connection.query(`SELECT * FROM users WHERE gid = ${gid} AND id = ${id}`,
Обратите внимание, данный код уязвим к SQL инъекции, лучше используйте placholders: https://github.com/sidorares/n... irst-query
2
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 52
28.05.2020, 02:15  [ТС]
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Dragone, вы можете использовать сразу Promise версию: https://github.com/sidorares/n... se-wrapper


покажите код как создается соединение


Обратите внимание, данный код уязвим к SQL инъекции, лучше используйте placholders: https://github.com/sidorares/n... irst-query
Я уже решил проблему с соединением, а на счёт sql инъекций я не задумывался, спасибо что напомнили про них.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2020, 02:15
Помогаю со студенческими работами здесь

Как отобразить данные с таблицы MySQL в DataGridView?
Я новичок в этом деле, учусь. Такой вопрос: Есть БД, есть форма, кнопка и DataGridView. Как отобразить данные с таблицы БД в DataGridView?

Как получив данные из одной таблицы MySQL найти их в другой?
Короче, возникла такая проблема при выборке данных из БД MySQL: В БД test есть две таблицы: &quot;favorite&quot; и &quot;users&quot;. В...

Как подставить в значение переменной, данные взятые из таблицы mysql
Здравствуйте. (C# VS2013)Есть такая задача, запускать exe фаил с параметрами, один из которых должен быть переменной, значение которой...

Как записывать данные в связанные таблицы MySQL многие-ко-многим
Здравствуйте, Уважаемые форумчаны. Я пытаюсь разобраться с реляционными базами данных. Есть 2 таблицы: в 1 студенты во 2 группы в...

Как вывести данные в html страницу в виде таблицы из mysql. php
Вот так могу &lt;?php require 'scripts/connect.php'; $sql_select = &quot;SELECT * FROM pers&quot;; $result = mysql_query($sql_select); $row...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru