Node.js MySQL Где
Выбрать с фильтром
При выборе записей из таблицы вы можете отфильтровать выборку с помощью оператора WHERE:
Пример
Выберите записи с адресом "Park Lane 38":
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM customers WHERE address = 'Park Lane 38'", function (err, result) {
if (err) throw err;
console.log(result);
});
});
Сохраните приведенный выше код в файле с именем «demo_db_where.js» и запустите файл:
Запустите «demo_db_where.js»
C:\Users\Your Name>node demo_db_where.js
Что даст вам этот результат:
[
{ id: 11, name: 'Ben', address: 'Park Lane 38'}
]
Подстановочные знаки
Вы также можете выбрать записи, которые начинаются, включают или заканчиваются данной буквой или фразой.
Используйте подстановочный знак «%» для представления нуля, одного или нескольких символов:
Пример
Выберите записи, в которых адрес начинается с буквы «S»:
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM customers WHERE address LIKE 'S%'", function (err, result) {
if (err) throw err;
console.log(result);
});
});
Сохраните приведенный выше код в файле с именем «demo_db_where_s.js» и запустите файл:
Запустите «demo_db_where_s.js»
C:\Users\Your Name>node demo_db_where_s.js
Что даст вам этот результат:
[
{ id: 8, name: 'Richard',
address: 'Sky st 331'},
{ id: 14, name: 'Viola', address: 'Sideway
1633'}
]
Экранирование значений запроса
Когда значения запроса являются переменными, предоставленными пользователем, вы должны экранировать значения.
Это делается для предотвращения SQL-инъекций, которые являются распространенным методом веб-хакерства для уничтожения или неправильного использования вашей базы данных.
В модуле MySQL есть методы для экранирования значений запроса:
Пример
Экранируйте значения запроса, используя mysql.escape()
метод:
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address =
' + mysql.escape(adr);
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
Вы также можете использовать a ?
в качестве заполнителя для значений, которые вы хотите экранировать.
В этом случае переменная передается вторым параметром в методе query():
Пример
Экранируйте значения запроса, используя ?
метод заполнителя:
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address =
?';
con.query(sql, [adr], function (err, result) {
if (err) throw err;
console.log(result);
});
Если у вас есть несколько заполнителей, массив будет содержать несколько значений в следующем порядке:
Пример
Несколько заполнителей:
var name = 'Amy';
var adr = 'Mountain 21';
var sql = 'SELECT * FROM
customers WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
if (err) throw err;
console.log(result);
});