Javascript Node.js MySQL:根据查询字符串选择语句?
我在建一家拍卖行。我使用的是nodejs mysql包,我有一个nodejsJavascript 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
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']'
,然后是服务器端拍卖李>
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
也可以吗?