Node.js MySQL


Sélectionner avec un filtre

Lors de la sélection d'enregistrements dans une table, vous pouvez filtrer la sélection à l'aide de l'instruction "WHERE" :

Exemple

Sélectionnez le ou les enregistrements avec l'adresse "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);
  });
});

Enregistrez le code ci-dessus dans un fichier appelé "demo_db_where.js" et exécutez le fichier :

Exécutez "demo_db_where.js"

C:\Users\Your Name>node demo_db_where.js

Ce qui vous donnera ce résultat :

[
  { id: 11, name: 'Ben', address: 'Park Lane 38'}
]


Caractères génériques

Vous pouvez également sélectionner les enregistrements qui commencent, incluent ou se terminent par une lettre ou une phrase donnée.

Utilisez le caractère générique '%' pour représenter zéro, un ou plusieurs caractères :

Exemple

Sélectionnez les enregistrements dont l'adresse commence par la lettre "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);
  });
});

Enregistrez le code ci-dessus dans un fichier appelé "demo_db_where_s.js" et exécutez le fichier :

Exécutez "demo_db_where_s.js"

C:\Users\Your Name>node demo_db_where_s.js

Ce qui vous donnera ce résultat :

[
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'}
]

Échapper aux valeurs de requête

Lorsque les valeurs de requête sont des variables fournies par l'utilisateur, vous devez échapper les valeurs.

Ceci afin d'empêcher les injections SQL, qui est une technique de piratage Web courante pour détruire ou abuser de votre base de données.

Le module MySQL a des méthodes pour échapper les valeurs de requête :

Exemple

Échapper aux valeurs de requête en utilisant la mysql.escape() méthode :

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);
});

Vous pouvez également utiliser a ?comme espace réservé pour les valeurs que vous souhaitez échapper.

Dans ce cas, la variable est envoyée comme second paramètre dans la méthode query() :

Exemple

Échapper aux valeurs de requête à l'aide de la ? méthode d'espace réservé :

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);
});

Si vous avez plusieurs espaces réservés, le tableau contient plusieurs valeurs, dans cet ordre :

Exemple

Plusieurs espaces réservés :

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);
});