EN
Node.js - MySQL - ER_PARSE_ERROR with placeholders
1
answers
0
points
I was trying to select records in my database (MySQL), but I got this response:
code: 'ER_PARSE_ERROR',
errno: 1064,
sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''users' ORDER BY 'name'' at lin
' at line 1",
sqlState: '42000',
index: 0,
sql: "SELECT * FROM 'users' ORDER BY 'name'
My code:
con.connect((err) => {
if (err) throw err;
let sql = `SELECT * FROM ? ORDER BY ?`;
const values = ['users', 'name'];
// sends queries and receives results
con.query(sql, values, (err, result) => {
if (err) throw err;
console.log(result);
con.end();
});
});
How to fix this?
1 answer
0
points
SQL syntax does not tolerate single quotes for table and column names.
Correct SQL syntax:
SELECT * FROM users ORDER BY name
SELECT * FROM `users` ORDER BY `name`
- with backticks
To enter the values you want using placeholders, use ??
instead of ?
? is for ordinary values, ?? is used for column and table names.
Fixed code:
con.connect((err) => {
if (err) throw err;
let sql = `SELECT * FROM ?? ORDER BY ??`;
const values = ['users', 'name'];
// sends queries and receives results
con.query(sql, values, (err, result) => {
if (err) throw err;
console.log(result);
con.end();
});
});
0 comments
Add comment