Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js MySQL:根据查询字符串选择语句?_Javascript_Php_Mysql_Node.js - Fatal编程技术网

Javascript Node.js MySQL:根据查询字符串选择语句?

Javascript Node.js MySQL:根据查询字符串选择语句?,javascript,php,mysql,node.js,Javascript,Php,Mysql,Node.js,我在建一家拍卖行。我使用的是nodejs mysql包,我有一个nodejsserver.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,N

我在建一家拍卖行。我使用的是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 = []; 
  • 当一个
    $\u GET['id']
    可用于另一个带有
    WHERE
    -条件的
    SELECT
    -语句时,如何实现此查询的更改?因为我想为单个拍卖添加
    WHERE auction='$\u GET['id']'
    ,然后是服务器端拍卖
  • 有没有办法让它更具可读性?因为当我按ENTER键时,SELECT语句根本不起作用。这是它在nodejs服务器文件
    server.js
    上的外观:

  • 有两种方法可以将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、 美国。 这只是一个想法。例如,您可以使用
    var where=array()
    并用条件填充它。然后,只需在数组上循环并通过
    创建查询连接条件

    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
    变量构建查询。

    谢谢。现在我只是想得到id,但是我的结果是“未定义”的。使用该代码:
    var qry=require('url').parse(socket.handshake.url);var qry_id=qry.id不要忘记TRUE-.parse(socket.handshake.url,TRUE);你得到了什么console.log(qry)?是的,我已经添加了“true”。它说的是[object]。但是如果我键入
    console.log(qry.path)
    整个url就会显示出来。但是我如何才能得到一个特定的查询字符串,比如id?为什么他显示的是socket.io url而不是我本地主机的urlvar qry=require('url')。解析(req.url,true)。查询;-控制台日志(qry.id);-这对我来说很好,我刚刚发现了问题。是关于文件夹的。在
    server.js
    中,它被定义为
    http.listen(1337)
    。但我不是在测试
    http://localhost:1337
    。I在
    http://localhost/customname/
    。这就是为什么我不能得到一个id。但是我如何才能将它更改为customname文件夹,例如
    http://localhost/customname/?id=1234
    也可以吗?