Node.js MySQL:Select语句取决于查询字符串?

时间:2015-04-18 07:10:30

标签: javascript php mysql node.js

我正在建造一家拍卖行。我正在使用nodejs-mysql包,我有这个nodejs server.js - 主页的代码,显示多个拍卖

// loop
var pollingLoop = function() {
  // Doing the database query
var query = connection.query('SELECT a.`id`,a.`product_id`,a.`price`,a.`random`,a.`price_end`,TIMESTAMPDIFF(SECOND,NOW(),a.`date_end`) AS duration,p.`price_retail` FROM `auctions` AS a LEFT JOIN `products` AS p ON p.`id` = a.`product_id` WHERE TIMESTAMPDIFF(SECOND,NOW(),a.`date_end`) > "-1" ORDER BY `duration` DESC,`id` DESC'),
    auctions = []; 
  1. $_GET['id']可用于另一个SELECT - WHERE条件的语句时,如何更改此查询?因为我想为单次拍卖添加WHERE auction='$_GET['id']' 然后(但是服务器端)。
  2. 有没有办法让它更具可读性?因为当我按 ENTER 时,SELECT - 语句根本不起作用。这是它在nodejs-server-file server.jshttp://i.stack.imgur.com/37fDl.jpg
  3. 上的外观

1 个答案:

答案 0 :(得分:0)

有两种方法可以将Javascript字符串分成多行:反斜杠和字符串连接。

使用反斜杠划分

var text = "Lorem ipsum dolor sit amet,\
consectetur adipisicing elit,\
sed do eiusmod tempor incididunt\
ut labore et dolore magna aliqua.";

使用字符串连接进行分隔

var text = "Lorem ipsum dolor sit amet,"
         + "consectetur adipisicing elit,"
         + "sed do eiusmod tempor incididunt"
         + "ut labore et dolore magna aliqua.";

您需要以动态方式构建查询。这样的事情。

var query = 'SELECT \
    a.`id`, \
    a.`product_id`, \
    a.`price`, \
    a.`random`, \
    a.`price_end`, \
    TIMESTAMPDIFF(SECOND, \
        NOW(), \
        a.`date_end`) AS duration, \
    p.`price_retail` \
FROM \
    `auctions` AS a \
        LEFT JOIN \
    `products` AS p ON p.`id` = a.`product_id`';

var where = '';
if (condition) {
   where = 'WHERE \
    TIMESTAMPDIFF(SECOND, \
        NOW(), \
        a.`date_end`) > - 1';
} else {
   where = "auction='$_GET['id']'";
}

var order = ' ORDER BY `duration` DESC , `id` DESC';
query = query + where + order 
var res = connection.query(query), auctions = []; 

P.S。 这只是一个想法。例如,您可以使用var where = array()并填写条件。然后,只需循环遍历数组并按AND创建查询连接条件。

UPD:

如果您不使用 express 模块,您可以使用url模块找到GET参数。

var query = require('url').parse(req.url,true).query;

var id = query.id;
var some_par = query.some_par;

For url: /path/filename?id=123&some_par=456

然后,您可以使用id变量构建查询。