处理数组非常聪明:
var sql = 'UPDATE visentry SET flag= ? WHERE row_name = ?';
var row_name = 'blah_blah_blah';
connection.query(sql,[flag, row_name], function(err,rows,fields) { });
如果要使用第一种方法,则应使用变量,而不是查询中的字符串.正确的语法是:
connection.query('UPDATE visentry SET flag = "' + flag + '"', function(err,rows,fields) { });
但是这种方法不够安全,你可能想要逃避标志(引号和其他特殊字符)的值并使其对sql友好.
function mysql_real_escape_string (str) {
return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
switch (char) {
case "\0":
return "\\0";
case "\x08":
return "\\b";
case "\x09":
return "\\t";
case "\x1a":
return "\\z";
case "\n":
return "\\n";
case "\r":
return "\\r";
case "\"":
case "'":
case "\\":
case "%":
return "\\"+char; // prepends a backslash to backslash, percent,
// and double/single quotes
}
});
}
所以,这种方法的最佳实践可能是:
connection.query('UPDATE visentry SET flag = "' + mysql_real_escape_string(flag) + '"', function(err,result) { });