Comment interroger les données de la base de données MySQL à l'aide de

Dans ce didacticiel, vous apprendrez à interroger les données de la base de données MySQL en utilisant PHP PDO. Vous apprendrez également à utiliser l'instruction préparée par PDO pour sélectionner des données en toute sécurité.

PHP MySQL Interroger des données à l'aide d'une simple instruction SELECT

Pour interroger les données de la base de données MySQL, suivez les étapes ci-dessous :

Tout d'abord, connectez-vous à une base de données MySQL. Consultez le didacticiel de connexion à la base de données MySQL à l'aide de PDO pour obtenir des informations détaillées .

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

Ensuite, construisez une instruction SELECT et exécutez-la en utilisant la query()méthode de l'objet PDO.

$sql = 'SELECT lastname, firstname, jobtitle 
        FROM employees
        ORDER BY lastname';

$q = $pdo->query($sql);

La query()méthode de l'objet PDO renvoie un PDOStatementobjet, ou falseen cas d'échec.

Ensuite, définissez le PDO::FETCH_ASSOCmode de récupération de l' PDOStatementobjet à l'aide de la setFetchMode()méthode. Le PDO::FETCH_ASSOCmode demande à la fetch()méthode de renvoyer un jeu de résultats sous la forme d'un tableau indexé par nom de colonne.

$q->setFetchMode(PDO::FETCH_ASSOC);

Après cela, récupérez chaque ligne du jeu de résultats jusqu'à ce qu'il n'y ait plus de ligne en utilisant la fetch()méthode de l' PDOStatementobjet.

Mettre tous ensemble.

<?php
require_once 'dbconfig.php';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    $sql = 'SELECT lastname,
                    firstname,
                    jobtitle
               FROM employees
              ORDER BY lastname';

    $q = $pdo->query($sql);
    $q->setFetchMode(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    die("Could not connect to the database $dbname :" . $e->getMessage());
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>PHP MySQL Query Data Demo</title>
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <link href="css/style.css" rel="stylesheet">
    </head>
    <body>
        <div id="container">
            <h1>Employees</h1>
            <table class="table table-bordered table-condensed">
                <thead>
                    <tr>
                        <th>First Name</th>
                        <th>Last Name</th>
                        <th>Job Title</th>
                    </tr>
                </thead>
                <tbody>
                    <?php while ($row = $q->fetch()): ?>
                        <tr>
                            <td><?php echo htmlspecialchars($row['lastname']) ?></td>
                            <td><?php echo htmlspecialchars($row['firstname']); ?></td>
                            <td><?php echo htmlspecialchars($row['jobtitle']); ?></td>
                        </tr>
                    <?php endwhile; ?>
                </tbody>
            </table>
    </body>
</div>
</html>
PHP PDO MySQL SELECT

PHP MySQL Interroger des données à l'aide d'une instruction préparée PDO

En pratique, nous passons souvent l'argument de PHP à l'instruction SQL, par exemple, récupérez l'employé dont le nom se termine par son. Pour le faire en toute sécurité et éviter les attaques par injection SQL, vous devez utiliser l'instruction préparée PDO.

Jetons un œil à l'exemple suivant :

<?php

require_once 'dbconfig.php';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    $sql = 'SELECT lastname,
                    firstname,
                    jobtitle
               FROM employees
              WHERE lastname LIKE ?';

    $q = $pdo->prepare($sql);
    $q->execute(['%son']);
    $q->setFetchMode(PDO::FETCH_ASSOC);

    while ($r = $q->fetch()) {
        echo sprintf('%s <br/>', $r['lastname']);
    }
} catch (PDOException $pe) {
    die("Could not connect to the database $dbname :" . $pe->getMessage());
}

Comment fonctionne le script.

  • Tout d'abord, nous utilisons un point d'interrogation (?) dans l' SELECTénoncé. PDO remplacera le point d'interrogation dans la requête par l'argument correspondant. Le point d'interrogation est appelé espace réservé de position.
  • Ensuite, nous appelons la prepare()méthode de l'objet PDO pour préparer l'instruction SQL pour l'exécution.
  • Ensuite, nous exécutons l'instruction en appelant la execute()méthode de l' PDOStatementobjet. De plus, nous passons un argument sous forme de tableau pour remplacer l'espace réservé dans l' SELECTinstruction. Ce faisant, la SELECTdéclaration sera traduite comme suit :
SELECT lastname,
       firstname,
       jobtitle
  FROM employees
 WHERE lastname LIKE '%son';
  • Après cela, nous définissons le mode de récupération de l' PDOStatementobjet.
  • Enfin, nous récupérons chaque ligne du jeu de résultats et affichons le champ du nom de famille.

PHP vous fournit une autre façon d'utiliser des espaces réservés dans l'instruction préparée appelée espace réservé nommé. Les avantages de l'utilisation de l'espace réservé nommé sont :

  • Plus descriptif.
  • Si l'instruction SQL a plusieurs espaces réservés, il est plus facile de passer les arguments à la execute()méthode.

Jetons un œil à l'exemple suivant :

<?php

require_once 'dbconfig.php';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    $sql = 'SELECT lastname,
                    firstname,
                    jobtitle
               FROM employees
              WHERE lastname LIKE :lname OR 
                    firstname LIKE :fname;';

    // prepare statement for execution
    $q = $pdo->prepare($sql);
    
    // pass values to the query and execute it
    $q->execute([':fname' => 'Le%',
        ':lname' => '%son']);
    
    $q->setFetchMode(PDO::FETCH_ASSOC);
    
    // print out the result set
    while ($r = $q->fetch()) {
        echo sprintf('%s <br/>', $r['lastname']);
    }
} catch (PDOException $e) {
    die("Could not connect to the database $dbname :" . $e->getMessage());
}

Les :lnameet :fnamesont les espaces réservés nommés. Ils sont remplacés par l'argument correspondant dans le tableau associatif que nous passons à la méthode d'exécution.

Dans ce didacticiel, vous avez appris à interroger les données de la base de données MySQL à l'aide d'objets PDO.

What is GEEK

Buddha Community

Joe  Hoppe

Joe Hoppe

1595905879

Best MySQL DigitalOcean Performance – ScaleGrid vs. DigitalOcean Managed Databases

HTML to Markdown

MySQL is the all-time number one open source database in the world, and a staple in RDBMS space. DigitalOcean is quickly building its reputation as the developers cloud by providing an affordable, flexible and easy to use cloud platform for developers to work with. MySQL on DigitalOcean is a natural fit, but what’s the best way to deploy your cloud database? In this post, we are going to compare the top two providers, DigitalOcean Managed Databases for MySQL vs. ScaleGrid MySQL hosting on DigitalOcean.

At a glance – TLDR
ScaleGrid Blog - At a glance overview - 1st pointCompare Throughput
ScaleGrid averages almost 40% higher throughput over DigitalOcean for MySQL, with up to 46% higher throughput in write-intensive workloads. Read now

ScaleGrid Blog - At a glance overview - 2nd pointCompare Latency
On average, ScaleGrid achieves almost 30% lower latency over DigitalOcean for the same deployment configurations. Read now

ScaleGrid Blog - At a glance overview - 3rd pointCompare Pricing
ScaleGrid provides 30% more storage on average vs. DigitalOcean for MySQL at the same affordable price. Read now

MySQL DigitalOcean Performance Benchmark
In this benchmark, we compare equivalent plan sizes between ScaleGrid MySQL on DigitalOcean and DigitalOcean Managed Databases for MySQL. We are going to use a common, popular plan size using the below configurations for this performance benchmark:

Comparison Overview
ScaleGridDigitalOceanInstance TypeMedium: 4 vCPUsMedium: 4 vCPUsMySQL Version8.0.208.0.20RAM8GB8GBSSD140GB115GBDeployment TypeStandaloneStandaloneRegionSF03SF03SupportIncludedBusiness-level support included with account sizes over $500/monthMonthly Price$120$120

As you can see above, ScaleGrid and DigitalOcean offer the same plan configurations across this plan size, apart from SSD where ScaleGrid provides over 20% more storage for the same price.

To ensure the most accurate results in our performance tests, we run the benchmark four times for each comparison to find the average performance across throughput and latency over read-intensive workloads, balanced workloads, and write-intensive workloads.

Throughput
In this benchmark, we measure MySQL throughput in terms of queries per second (QPS) to measure our query efficiency. To quickly summarize the results, we display read-intensive, write-intensive and balanced workload averages below for 150 threads for ScaleGrid vs. DigitalOcean MySQL:

ScaleGrid MySQL vs DigitalOcean Managed Databases - Throughput Performance Graph

For the common 150 thread comparison, ScaleGrid averages almost 40% higher throughput over DigitalOcean for MySQL, with up to 46% higher throughput in write-intensive workloads.

#cloud #database #developer #digital ocean #mysql #performance #scalegrid #95th percentile latency #balanced workloads #developers cloud #digitalocean droplet #digitalocean managed databases #digitalocean performance #digitalocean pricing #higher throughput #latency benchmark #lower latency #mysql benchmark setup #mysql client threads #mysql configuration #mysql digitalocean #mysql latency #mysql on digitalocean #mysql throughput #performance benchmark #queries per second #read-intensive #scalegrid mysql #scalegrid vs. digitalocean #throughput benchmark #write-intensive

Comment interroger les données de la base de données MySQL à l'aide de

Dans ce didacticiel, vous apprendrez à interroger les données de la base de données MySQL en utilisant PHP PDO. Vous apprendrez également à utiliser l'instruction préparée par PDO pour sélectionner des données en toute sécurité.

PHP MySQL Interroger des données à l'aide d'une simple instruction SELECT

Pour interroger les données de la base de données MySQL, suivez les étapes ci-dessous :

Tout d'abord, connectez-vous à une base de données MySQL. Consultez le didacticiel de connexion à la base de données MySQL à l'aide de PDO pour obtenir des informations détaillées .

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

Ensuite, construisez une instruction SELECT et exécutez-la en utilisant la query()méthode de l'objet PDO.

$sql = 'SELECT lastname, firstname, jobtitle 
        FROM employees
        ORDER BY lastname';

$q = $pdo->query($sql);

La query()méthode de l'objet PDO renvoie un PDOStatementobjet, ou falseen cas d'échec.

Ensuite, définissez le PDO::FETCH_ASSOCmode de récupération de l' PDOStatementobjet à l'aide de la setFetchMode()méthode. Le PDO::FETCH_ASSOCmode demande à la fetch()méthode de renvoyer un jeu de résultats sous la forme d'un tableau indexé par nom de colonne.

$q->setFetchMode(PDO::FETCH_ASSOC);

Après cela, récupérez chaque ligne du jeu de résultats jusqu'à ce qu'il n'y ait plus de ligne en utilisant la fetch()méthode de l' PDOStatementobjet.

Mettre tous ensemble.

<?php
require_once 'dbconfig.php';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    $sql = 'SELECT lastname,
                    firstname,
                    jobtitle
               FROM employees
              ORDER BY lastname';

    $q = $pdo->query($sql);
    $q->setFetchMode(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    die("Could not connect to the database $dbname :" . $e->getMessage());
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>PHP MySQL Query Data Demo</title>
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <link href="css/style.css" rel="stylesheet">
    </head>
    <body>
        <div id="container">
            <h1>Employees</h1>
            <table class="table table-bordered table-condensed">
                <thead>
                    <tr>
                        <th>First Name</th>
                        <th>Last Name</th>
                        <th>Job Title</th>
                    </tr>
                </thead>
                <tbody>
                    <?php while ($row = $q->fetch()): ?>
                        <tr>
                            <td><?php echo htmlspecialchars($row['lastname']) ?></td>
                            <td><?php echo htmlspecialchars($row['firstname']); ?></td>
                            <td><?php echo htmlspecialchars($row['jobtitle']); ?></td>
                        </tr>
                    <?php endwhile; ?>
                </tbody>
            </table>
    </body>
</div>
</html>
PHP PDO MySQL SELECT

PHP MySQL Interroger des données à l'aide d'une instruction préparée PDO

En pratique, nous passons souvent l'argument de PHP à l'instruction SQL, par exemple, récupérez l'employé dont le nom se termine par son. Pour le faire en toute sécurité et éviter les attaques par injection SQL, vous devez utiliser l'instruction préparée PDO.

Jetons un œil à l'exemple suivant :

<?php

require_once 'dbconfig.php';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    $sql = 'SELECT lastname,
                    firstname,
                    jobtitle
               FROM employees
              WHERE lastname LIKE ?';

    $q = $pdo->prepare($sql);
    $q->execute(['%son']);
    $q->setFetchMode(PDO::FETCH_ASSOC);

    while ($r = $q->fetch()) {
        echo sprintf('%s <br/>', $r['lastname']);
    }
} catch (PDOException $pe) {
    die("Could not connect to the database $dbname :" . $pe->getMessage());
}

Comment fonctionne le script.

  • Tout d'abord, nous utilisons un point d'interrogation (?) dans l' SELECTénoncé. PDO remplacera le point d'interrogation dans la requête par l'argument correspondant. Le point d'interrogation est appelé espace réservé de position.
  • Ensuite, nous appelons la prepare()méthode de l'objet PDO pour préparer l'instruction SQL pour l'exécution.
  • Ensuite, nous exécutons l'instruction en appelant la execute()méthode de l' PDOStatementobjet. De plus, nous passons un argument sous forme de tableau pour remplacer l'espace réservé dans l' SELECTinstruction. Ce faisant, la SELECTdéclaration sera traduite comme suit :
SELECT lastname,
       firstname,
       jobtitle
  FROM employees
 WHERE lastname LIKE '%son';
  • Après cela, nous définissons le mode de récupération de l' PDOStatementobjet.
  • Enfin, nous récupérons chaque ligne du jeu de résultats et affichons le champ du nom de famille.

PHP vous fournit une autre façon d'utiliser des espaces réservés dans l'instruction préparée appelée espace réservé nommé. Les avantages de l'utilisation de l'espace réservé nommé sont :

  • Plus descriptif.
  • Si l'instruction SQL a plusieurs espaces réservés, il est plus facile de passer les arguments à la execute()méthode.

Jetons un œil à l'exemple suivant :

<?php

require_once 'dbconfig.php';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    $sql = 'SELECT lastname,
                    firstname,
                    jobtitle
               FROM employees
              WHERE lastname LIKE :lname OR 
                    firstname LIKE :fname;';

    // prepare statement for execution
    $q = $pdo->prepare($sql);
    
    // pass values to the query and execute it
    $q->execute([':fname' => 'Le%',
        ':lname' => '%son']);
    
    $q->setFetchMode(PDO::FETCH_ASSOC);
    
    // print out the result set
    while ($r = $q->fetch()) {
        echo sprintf('%s <br/>', $r['lastname']);
    }
} catch (PDOException $e) {
    die("Could not connect to the database $dbname :" . $e->getMessage());
}

Les :lnameet :fnamesont les espaces réservés nommés. Ils sont remplacés par l'argument correspondant dans le tableau associatif que nous passons à la méthode d'exécution.

Dans ce didacticiel, vous avez appris à interroger les données de la base de données MySQL à l'aide d'objets PDO.

Récupérer Des Données De La Base De Données MySQL à L'aide D'AJAX

 MySQL est un système de gestion de base de données relationnelle basé sur SQL - Structured Query Language, et la gestion des données dans MySQL n'est pas si difficile.

Dans ce guide détaillé, nous allons découvrir comment récupérer des données de la base de données MySQL en utilisant AJAX dans l'application Node js. Nous allons construire un élément déroulant HTML dans lequel nous obtiendrons les enregistrements de la base de données.

Nous allons installer certains packages à partir du registre NPM, et ces packages nous aideront à connecter Node à la base de données MySQL et à créer les routes API qui interagiront avec la base de données.

De plus, nous allons créer le script de nœud, qui nous aidera à exécuter le serveur de nœud.

Découvrons comment travailler avec la base de données MySQL via un environnement de nœud.

Comment obtenir des données de la base de données MySQL à l'aide de Node Js et jQuery Ajax

  • Étape 1 : Créer une application de nœud
  • Étape 2 : Ajouter des modules NPM
  • Étape 3 : Créer une table dans la base de données
  • Étape 4 : connexion à la base de données
  • Étape 5 : Créer un fichier serveur
  • Étape 6 : Rendre et afficher les données en HTML
  • Étape 7 : Projet de nœud de service

Créer une application de nœud

Tapez la commande mkdir suivie du nom de votre projet et appuyez sur Entrée pour créer un nouveau dossier.

mkdir node-vlog

Ensuite, déplacez-vous dans le dossier de l'application.

cd node-vlog

Utilisez la commande npm init, cette commande crée le fichier package.json , où les méta-informations de votre projet restent.

npm init

À la racine du projet, créez un fichier app.js , enregistrez le nom du fichier dans la section des scripts afin que ce script de nœud puisse être appelé à l'aide de l'outil de ligne de commande.

{
  "main": "app.js",
}

Ajouter des modules NPM

Nous allons installer les packages ci-dessous à partir du registre npm, exécuter la commande et installer les modules simultanément.

npm install ejs express cors mysql body-parser nodemon

Créer une table dans la base de données

Dans votre base de données, vous devez avoir une table avec quelques enregistrements, afin que vous puissiez obtenir les données de la base de données.

Si vous n'avez pas créé de table, exécutez la commande sql donnée à partir de l'onglet sql.

CREATE DATABASE nodedb;

CREATE TABLE Country (
  id int not null,
  name varchar(150) not null);
INSERT INTO country VALUES(1,'Colombia');
INSERT INTO country VALUES(2,'Estonia');
INSERT INTO country VALUES(3,'Belgium');
INSERT INTO country VALUES(4,'Austria');
INSERT INTO country VALUES(5,'Denmark');</code></pre>

Connexion à la base de données

Dans votre projet de nœud, créez le fichier database.js , puis dans le code donné, ajoutez vos informations d'identification de base de données afin de connecter la base de données à l'application de nœud.

var mysql = require('mysql')
var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'test'
})
connection.connect((err) => {
  if (err) {
    console.log(err)
    return
  }
  console.log('Database connected')
})
module.exports = connection

Créer un fichier serveur

Ouvrez le fichier de script app.js , dans ce fichier mettez le code donné.

var express = require('express')
var path = require('path')
var createError = require('http-errors')
var cors = require('cors')
var bodyParser = require('body-parser')
var app = express()

var dbMySQLNode = require('./database')
// view engine setup
app.set('views', path.join(__dirname, '/'))
app.set('view engine', 'ejs')
app.use(bodyParser.json())
app.use(
  bodyParser.urlencoded({
    extended: true,
  }),
)

app.use(cors())
app.get('/', (req, res) => {
  res.render('index')
})
app.get('/fetch-countries', function (req, res) {
  dbMySQLNode.query('SELECT * FROM Country ORDER BY id desc', function (
    error,
    response,
  ) {
    if (error) {
      res.json({
        msg: error,
      })
    } else {
      res.json({
        msg: 'Data successfully fetched',
        country: response,
      })
    }
  })
})
app.listen(5555, function () {
  console.log('Node app is being served on port: 5555')
})
module.exports = app

Le script suivant est chargé de configurer le moteur de vue ejs, de définir le paramètre cors, de déclarer la route qui communiquera avec la base de données et de définir le port d'application.

Rendu et affichage des données en HTML

A la racine de votre application, créez le fichier index.ejs , ce fichier gérera la vue de votre application node. Il affichera les enregistrements que vous obtenez de la base de données.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
      rel="stylesheet"
    />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
  <body>
    <div class="container">
      <h2 class="mb-4">Node js Ajax Get Data from MySQL Example</h2>
      <div class="form-group">
        <label><strong>Countries</strong></label>
        <select class="form-control" id="dynamicDropdown"></select>
      </div>
    </div>
    <script>
      $(document).ready(function () {
        function showCountryCollection() {
          var count_id = this.value;
          $("#dynamicDropdown").html("");
          $.ajax({
            url: "http://localhost:5555/fetch-countries",
            type: "GET",
            dataType: "json",
            success: function (res) {
              console.log(res);
              $("#dynamicDropdown").html('<option value="">Select</option>');
              $.each(res.Country, function (key, value) {
                $("#dynamicDropdown").append(
                  '<option value="' + value.id + '">' + value.name + "</option>"
                );
              });
            },
          });
        }
        showCountryCollection();
      });
    </script>
  </body>
</html>

Projet de nœud de service

En fin de compte, vous devez évoquer la commande suggérée pour démarrer l'application de nœud.

nodemon

Vous devez utiliser cette URL pour tester l'application :

http://localhost/:5555

Conclusion

Dans ce guide, nous avons examiné le processus d'obtention des résultats de la base de données MySQL dans l'application Node js.

Nous avons expliqué comment récupérer les données de la base de données MySQL et afficher les enregistrements dans la liste déroulante de sélection HTML dans une application Node js à l'aide des dépendances externes.

Nous espérons que vous avez aimé ce guide et que vous le partagez avec d'autres. 

Source : https://www.positronx.io/node-ajax-retrieve-records-from-mysql-database-tutorial/

#mysql #database #node #ajax 

Léon  Peltier

Léon Peltier

1655995200

Importer Un Fichier CSV Dans La Base De Données MySQL à L'aide De Node

Dans ce tutoriel, vous découvrirez comment importer un fichier CSV dans la base de données MySQL à l'aide de Node js et du package Fast CSV.

Le téléchargement de fichiers vers des bases de données est facilité par le package Multer. Multer est un package npm populaire qui permet de télécharger des fichiers de manière moins atroce.

Il est conçu pour node js, un middleware puissant qui gère les données multipart/form et est principalement utilisé pour télécharger des fichiers.
Nous combinerons multer avec le module Fast-csv pour importer des fichiers dans la base de données MySQL.

Fast CSV est un package pratique qui analyse et formate les fichiers CSV ou tout autre fichier de valeurs délimitées dans l'environnement node js.

Il existe également d'autres modules que nous utiliserons dans ce guide; ces packages nous aideront à créer la fonctionnalité d'importation de fichiers csv dans Node js.

Comment transférer des données d'un fichier CSV dans une base de données MySQL à l'aide de Node Js

  • Étape 1 : Créer une application de nœud
  • Étape 2 : Installer les modules NPM
  • Étape 3 : Générer une table MySQL
  • Étape 4 : Créer un formulaire d'importation de fichier HTML
  • Étape 5 : Créer un fichier serveur
  • Étape 6 : Exécuter le projet de nœud

Créer une application de nœud

Accédez à l'invite de commande de votre terminal et exécutez la commande donnée pour rendre le dossier vide pour le projet de nœud.

mkdir node-csv

Entrez dans le dossier vide :

cd node-csv

Tapez la commande suggérée, puis exécutez la commande donnée pour générer le nouveau fichier package.json .

npm init

Maintenant, le script de nœud a été créé, il doit être enregistré dans la section des scripts comme indiqué, assurez-vous d'ajouter le nom du script dans le fichier package.json .

{
  "main": "app.js",
}
Install NPM Modules

De plus, nous devons taper la commande donnée sur le terminal et appuyer sur Entrée pour installer les modules donnés.

npm install fast-csv express mysql multer nodemon body-parser

Générer une table MySQL

Il est facile de créer une nouvelle table pour stocker les enregistrements de fichiers CSV, vous pouvez créer la table de données MySQL à l'aide de la commande SQL donnée.

CREATE TABLE `users` (
  `id` bigint(11) NOT NULL,
  `name` varchar(150) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE= InnoDB DEFAULT CHARSET=utf8

Créer un formulaire d'importation de fichier HTML

Créons un fichier index.html , ce fichier gérera la vue de la fonctionnalité.

Nous devons ajouter le lien Bootstrap 5 dans la section head, cela nous permettra de créer un composant d'interface utilisateur de téléchargement de fichiers.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Node CSV File Upload</title>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
      rel="stylesheet"
    />
  </head>
  <body>
    <h2 class="mb-3">Node Import CSV File to MySQL database Example</h2>
    <form action="/import-csv" method="post" enctype="multipart/form-data">
      <div class="mb-3">
        <input
          type="file"
          class="form-control"
          name="import-csv"
          accept="csv"
        />
      </div>
      <div class="d-grid">
        <input type="submit" class="btn btn-dark" value="Store File" />
      </div>
    </form>
  </body>
</html>

Créer un fichier serveur

Ouvrez le fichier app.js , dans ce fichier vous devez placer le code donné ligne par ligne.

Dans ce fichier, nous établissons la connexion de la base de données à MySQL, créons les routes qui géreront le téléchargement du fichier csv vers la base de données et configurons le port d'application du nœud.

const express = require('express')
const bodyparser = require('body-parser')
const fs = require('fs');
const path = require('path')
const mysql = require('mysql')
const multer = require('multer')
const csv = require('fast-csv');
 
const app = express()
app.use(express.static("./public"))
 
app.use(bodyparser.json())
app.use(bodyparser.urlencoded({
    extended: true
}))
 
// Database connection
const db = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "test"
})
 
db.connect(function (err) {
    if (err) {
        return console.error(err.message);
    }
    console.log('Connected to database.');
})
 
var storage = multer.diskStorage({
    destination: (req, file, callBack) => {
        callBack(null, './uploads/')    
    },
    filename: (req, file, callBack) => {
        callBack(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
    }
})
 
var upload = multer({
    storage: storage
});
 
app.get('/', (req, res) => {
  res.sendFile(__dirname + '/index.html');
});
 
app.post('/import-csv', upload.single("import-csv"), (req, res) =>{
    uploadCsv(__dirname + '/uploads/' + req.file.filename);
    console.log('File has imported :' + err);
});
 
function uploadCsv(uriFile){
    let stream = fs.createReadStream(uriFile);
    let csvDataColl = [];
    let fileStream = csv
        .parse()
        .on("data", function (data) {
            csvDataColl.push(data);
        })
        .on("end", function () {
            csvDataColl.shift();
  
            db.connect((error) => {
                if (error) {
                    console.error(error);
                } else {
                    let query = 'INSERT INTO users (id, name, email) VALUES ?';
                    db.query(query, [csvDataColl], (error, res) => {
                        console.log(error || res);
                    });
                }
            });
             
            fs.unlinkSync(uriFile)
        });
  
    stream.pipe(fileStream);
}
 
const PORT = process.env.PORT || 5555
app.listen(PORT, () => console.log(`Node app serving on port: ${PORT}

Exécuter le projet de nœud

Voici la commande qui démarrera l'application de nœud, le module nodemon redémarrera votre serveur de nœud même si vous apportez des modifications mineures aux fichiers de l'application de nœud.

nodemon

Vous pouvez taper l'URL donnée sur le navigateur pour tester l'application.

http://localhost:5555

Conclusion

Node js est un excellent framework, et il permet aux développeurs de créer toutes les fonctionnalités qu'ils souhaitent pour leurs applications Web.

Merci à la communauté npm, qui fournit presque tous les types de modules nécessaires pour créer les fonctionnalités souhaitées.

Dans ce didacticiel, nous avons appris à télécharger un fichier CSV dans une base de données MySQL à l'aide de Fast CSV, Multer, MySQL et, plus important encore, d'express js. 

Source : https://www.positronx.io/node-import-csv-file-data-to-mysql-database-with-html-form/

#csv #mysql #database #html 

Interroger les données dans la base de données MySQL à partir de Node

Dans ce didacticiel, vous apprendrez à interroger les données d'une table dans MySQL à partir d'une application node.js.

Les étapes pour interroger les données dans la base de données MySQL à partir de l'application node.js sont les suivantes :

  1. Établissez une connexion au serveur de base de données MySQL .
  2. Exécutez une SELECTinstruction et traitez le jeu de résultats.
  3. Fermez la connexion à la base de données.

Faire une requête simple

Le programme suivant Select.js sélectionne toutes les données de todosla table de todoappla base de données :

let mysql = require('mysql');
let config = require('./config.js');

let connection = mysql.createConnection(config);

let sql = `SELECT * FROM todos`;
connection.query(sql, (error, results, fields) => {
  if (error) {
    return console.error(error.message);
  }
  console.log(results);
});

connection.end(); 

Exécutons le programme select.js.

>node select.js
[ RowDataPacket { id: 1, title: 'Learn how to insert a new row', completed: 1 },
  RowDataPacket { id: 2, title: 'Insert a new row with placeholders', completed:0 },
  RowDataPacket { id: 3, title: 'Insert multiple rows at a time', completed: 0 },
  RowDataPacket { id: 4, title: 'It should work perfectly', completed: 1 } ]

Il renvoie 4 lignes comme prévu.

Transmettre les données pour la requête

Le programme select2.js suivant sélectionne uniquement la tâche terminée :

let mysql = require('mysql');
let config = require('./config.js');

let connection = mysql.createConnection(config);

let sql = `SELECT * FROM todos WHERE completed=?`;
connection.query(sql, [true], (error, results, fields) => {
  if (error) {
    return console.error(error.message);
  }
  console.log(results);
});

connection.end();

Dans cet exemple, nous avons utilisé un point d'interrogation (?) comme valeur d'espace réservé du champ rempli.

Lorsque nous avons appelé query()la méthode, nous avons passé un tableau comme deuxième argument. Les espaces réservés seront remplacés par les valeurs du tableau dans l'ordre.

>node select2.js
[ RowDataPacket { id: 1, title: 'Learn how to insert a new row', completed: 1 },
  RowDataPacket { id: 4, title: 'It should work perfectly', completed: 1 } ]

Le programme select2.js renvoie deux lignes avec une completedcolonne de 1, ce qui signifie truedans Node.js

Empêcher l'injection SQL

Supposons que vous souhaitiez interroger une tâche en fonction de son identifiant provenant d'un argument de ligne de commande, vous pouvez émettre le code suivant :

let mysql = require('mysql');
let config = require('./config.js');

let connection = mysql.createConnection(config);

let id = process.argv[2]; // pass argument to query
let sql = `SELECT * FROM todos WHERE id=` + id ;

connection.query(sql, (error, results, fields) => {
  if (error) {
    return console.error(error.message);
  }
  console.log(results);
});

connection.end();

Choisissez quoi faire avec l'identifiant 1 :

    >node select.js 1
    [ RowDataPacket { id: 1, title: 'Learn how to insert a new row', completed: 1 } ]

Cela fonctionne correctement. Cependant, il existe un problème où des utilisateurs suspects peuvent exploiter le programme en passant du code SQL dans l'argument.

Pour empêcher cette injection SQL, vous devez utiliser un espace réservé (?) comme dans l'exemple précédent ou utiliser escape()la méthode de l'objet mysqlou connectioncomme ceci :

let sql = `SELECT * FROM todos WHERE id = ` + mysql.escape(id);

Dans ce didacticiel, vous avez appris à interroger des données dans une base de données MySQL à partir du programme node.js.