Node.js MySQLที่ไหน
เลือกด้วยตัวกรอง
เมื่อเลือกระเบียนจากตาราง คุณสามารถกรองส่วนที่เลือกได้โดยใช้คำสั่ง "WHERE":
ตัวอย่าง
เลือกบันทึกที่มีที่อยู่ "Park Lane 38":
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM customers WHERE address = 'Park Lane 38'", function (err, result) {
if (err) throw err;
console.log(result);
});
});
บันทึกรหัสด้านบนในไฟล์ชื่อ "demo_db_where.js" และเรียกใช้ไฟล์:
เรียกใช้ "demo_db_where.js"
C:\Users\Your Name>node demo_db_where.js
ซึ่งจะให้ผลลัพธ์นี้แก่คุณ:
[
{ id: 11, name: 'Ben', address: 'Park Lane 38'}
]
อักขระตัวแทน
คุณยังสามารถเลือกเรกคอร์ดที่ขึ้นต้น รวม หรือลงท้ายด้วยตัวอักษรหรือวลีที่กำหนดได้
ใช้สัญลักษณ์แทน '%' เพื่อแสดงอักขระศูนย์ หนึ่งตัวหรือหลายตัว:
ตัวอย่าง
เลือกระเบียนที่ที่อยู่ขึ้นต้นด้วยตัวอักษร 'S':
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM customers WHERE address LIKE 'S%'", function (err, result) {
if (err) throw err;
console.log(result);
});
});
บันทึกรหัสด้านบนในไฟล์ชื่อ "demo_db_where_s.js" และเรียกใช้ไฟล์:
เรียกใช้ "demo_db_where_s.js"
C:\Users\Your Name>node demo_db_where_s.js
ซึ่งจะให้ผลลัพธ์นี้แก่คุณ:
[
{ id: 8, name: 'Richard',
address: 'Sky st 331'},
{ id: 14, name: 'Viola', address: 'Sideway
1633'}
]
หนีค่าการสืบค้น
เมื่อค่าการสืบค้นเป็นตัวแปรที่ผู้ใช้กำหนด คุณควรหลีกเลี่ยงค่า
นี่คือการป้องกันการฉีด SQL ซึ่งเป็นเทคนิคการแฮ็คเว็บทั่วไปในการทำลายหรือใช้ฐานข้อมูลของคุณในทางที่ผิด
โมดูล MySQL มีวิธีการหลีกเลี่ยงค่าแบบสอบถาม:
ตัวอย่าง
หนีค่าแบบสอบถามโดยใช้mysql.escape()
วิธีการ:
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address =
' + mysql.escape(adr);
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
คุณยังสามารถใช้ a ?
เป็นตัวยึดตำแหน่งสำหรับค่าที่คุณต้องการหลีกเลี่ยงได้
ในกรณีนี้ ตัวแปรจะถูกส่งเป็นพารามิเตอร์ตัวที่สองในเมธอด query()
ตัวอย่าง
Escape ค่าแบบสอบถามโดยใช้วิธีการยึด?
:
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address =
?';
con.query(sql, [adr], function (err, result) {
if (err) throw err;
console.log(result);
});
หากคุณมีตัวยึดตำแหน่งหลายตัว อาร์เรย์จะประกอบด้วยค่าหลายค่าตามลำดับดังนี้:
ตัวอย่าง
ตัวยึดตำแหน่งหลายตัว:
var name = 'Amy';
var adr = 'Mountain 21';
var sql = 'SELECT * FROM
customers WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
if (err) throw err;
console.log(result);
});