多个查询参数的 node-mysql 单个值

sta*_*af1 5 mysql prepared-statement node.js

目前,在 node.js 中,如果我想在 MySQL 表的多列中搜索一个字符串,我必须这样做:

mysqlConnection.query(
    "SELECT * FROM my_table WHERE column_a LIKE ? OR column_b LIKE ? OR column_c LIKE ?",
    [searchString, searchString, searchString],
    callback
);
Run Code Online (Sandbox Code Playgroud)

我希望能够这样做:

mysqlConnection.query(
    "SELECT * FROM my_table WHERE column_a LIKE ? OR column_b LIKE ? OR column_c LIKE ?", 
    searchString, callback
);
Run Code Online (Sandbox Code Playgroud)

或者甚至可以使用命名参数:

mysqlConnection.query(
    "SELECT * FROM my_table WHERE column_a LIKE :searchString OR column_b LIKE :searchString OR column_c LIKE :searchString",
    {searchString: "needle"},
    callback
);
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到吗?

Raf*_*afo 3

您可以在创建数据库池连接时启用命名参数。

const connection = mysql.createPool({
  ...yourConfig,
  namedPlaceholders: true,
});
Run Code Online (Sandbox Code Playgroud)

编辑:正如 @robertklep 所解释的,它仅适用于 mysql2 npm 包