Error: Incorrect arguments to mysqld_stmt_execute in Nodejs
Dung Do Tien May 04 2022 488
Hello, I have an assignment need to use NodeJs and connect to MySQL to get list articles. I install MySQL by command npm install mysql
and I have some javascript code to help get data as below:
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
async getArticles(num, page) {
const fromIndex = (page - 1) * num;
const statement = `SELECT id,title,sapo,content,publishdate FROM tlbArticles ORDER BY publishdate DESC LIMIT ? ,? ;`;
const result = await con.execute(statement, [fromIndex, num]);
console.log(result[0]);
return result;
}
But when running Node server with the command npm start I get an exception throw Error: Incorrect arguments to mysqld_stmt_execute.
Error: Incorrect arguments to mysqld_stmt_execute
at PromisePool.execute(C:\Projects\nodejs\learn_by_example\demo1\node_modules\mysql2\promise.js:359:22)
at ArticleService.getArticles(C:\Projects\nodejs\learn_by_example\demo1\src\services\articleService.js:359:22)
I think I connected to DB but when executed select
query, it threw this exception.
How can I fix it?
Thanks in advance.
Have 1 answer(s) found.
- D0
Dheeraj Yadav May 04 2022
I got the same error. I think
execute()
method with the second param, it only accepts string values so you need to convertfromIndex
&num
to string first.Solution: your variable can add more
''
after them. See the example below:async getArticles(num, page) { const fromIndex = (page - 1) * num; const statement = `SELECT id,title,sapo,content,publishdate FROM tlbArticles ORDER BY publishdate DESC LIMIT ? ,? ;`; const result = await con.execute(statement, [fromIndex + '', num + '']); console.log(result[0]); return result; }
It worked for me.
* Type maximum 2000 characters.
* All comments have to wait approved before display.
* Please polite comment and respect questions and answers of others.