ホームページ >ウェブフロントエンド >フロントエンドQ&A >Nodejsはmysqlファジークエリを使用します

Nodejsはmysqlファジークエリを使用します

WBOY
WBOYオリジナル
2023-05-28 09:21:07797ブラウズ

インターネットの活発な発展に伴い、今日のデータベース アプリケーションはますます普及しています。データベース分野では、MySQL は非常に人気のあるデータベース製品です。同時に、JavaScript は開発言語としても非常に人気のある言語であり、Node.js は JavaScript 上に構築されたサーバーサイド開発環境です。 Node.js と MySQL の組み合わせでは、ファジー クエリを実行できることが非常に必要です。今日は、nodejs による mysql ファジー クエリの実装について詳しく学びましょう。

1. Node.js と MySQL をインストールする
nodejs で mysql ファジー クエリを正式に使用し始める前に、まず Node.js と MySQL をインストールする必要があります。ここで繰り返します。

2. MySQL データベースへの接続
Node.js で MySQL データベースに接続するには、サードパーティ モジュールの mysql モジュールを使用する必要があります。したがって、npm を介して mysql モジュールをインストールする必要があります。インストール方法は、コマンド ラインに「npm install mysql」と入力します。

mysql モジュールをインストールした後、mysql モジュールを導入して接続を作成する必要があります。具体的なコードは次のとおりです:

const mysql = require('mysql');

// 创建连接
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'mydb'
});

connection.connect();

3. Node.js のファジー クエリ
Node.js では、MySQL の LIKE 演算子を使用してファジー クエリを実装できます。 LIKE 演算子は、WHERE 句の列内のパターンを検索するために使用されます。基本的な構文は次のとおりです。

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

LIKE 構文では、pattern を使用して、検索する文字列または文字パターンを指定します。パターン内で % および _ ワイルドカードを使用すると、あいまい検索を実行できます。具体的な意味は次のとおりです:
%: 0 個以上の文字を表します。
#: 任意の 1 文字を表します。

学生の名前 (name) と学生番号 (sno) が含まれるテーブル students があるとします。次に、Zhang という姓のすべての学生の情報を照会する必要があります。具体的なコードは次のとおりです。

const searchName = '张';
const sql = `SELECT * FROM students WHERE name LIKE '%${searchName}%'`;

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

connection.end();

上記のコードを通じて、students テーブル内の姓 Zhang を持つ学生に対するあいまいクエリを実現できます。ここで、% ワイルドカード文字は、Zhang という姓の後にどの文字が続いても一致するため、Zhang という姓を持つすべての学生の情報を照会できることを意味します。

4. SQL インジェクションを回避する
上記のコードではファジー クエリが実装されていますが、SQL インジェクションという非常に深刻な問題があります。前のコードでは、ユーザーが入力した検索内容を SQL ステートメントに直接接続していました。これにより、攻撃者に悪意のあるコードを挿入する機会が与えられます。したがって、このリスクを回避するには、いくつかのルールに従う必要があります。

一般的に言えば、文字列をエスケープすることで SQL インジェクションを回避できます。具体的なコードは次のとおりです。

const searchName = mysql.escape(req.query.name);
const sql = `SELECT * FROM students WHERE name LIKE '%${searchName}%'`;

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

connection.end();

上記のコードでは、mysql.escape() メソッドを通じてユーザーが入力した検索コンテンツをエスケープします。これにより、SQL インジェクションの問題を回避できます。

5. 概要
nodejs でのファジー クエリに mysql を使用することは、非常に実用的で必要な操作です。 Node.js にカプセル化された mysql モジュールを使用すると、MySQL データベースに簡単に接続し、さまざまなクエリ操作を実装できます。ファジー クエリを実行するときは、データのセキュリティを確保するために SQL インジェクションのリスクを回避するように注意する必要があります。

以上がNodejsはmysqlファジークエリを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。