2012-04-15 45 views
0
p_info_query('SELECT * FROM ' + <table> + ' WHERE name = ' + user_name, password, client_connect.id, p_info, function(results) { 

这似乎会产生未知列'user_name'。 我在网上搜索了一些这样做的人的例子,但我找不到任何。我想查询具体的事情,甚至可以比较2个值,用户和密码。似乎无法使用JavaScript查询使用node-mysql的特定内容

任何帮助?

//编辑的p_info_query功能

function p_info_query(sql, password, client_socket_id, player_info_object, callback) { 
    var result = mysql_client.query(sql, function (error, results, fields) { 
    if (error) { 
     console.log('ERROR IN MYSQL LOGIN CALLBACK : '+ error); 
     return false; 
    } 
    if (results.length > 0) { 

    // do stuff 


    callback(true); 
    } else { 

    callback(false); 
    } 
    } 
}); 
+0

我正在使用:https://github.com/felixge/node-mysql和user_name是一个变量,它包含客户端想要登录的user_name。 – user1328762 2012-04-15 03:56:01

回答

0

你的问题是,你没有引述user_name所以你最终有这样的SQL:

select * from table where name = whatever 

其中whatever是价值user_name,像这样一个非引用的值被解析为一个标识符(实质上是该上下文中的一个列名),因此您的“未知列”错误。

想必p_info_query是你自己的东西,因为它不是node-mysql的一部分。你应该修改它使用占位符,以便它可以做这样的事情在内部:

client.query(
    'select * from ' + table_name + ' where name = ?', 
    [ user_name ], 
    function(err, results, fields) { /* ... */ } 
); 

注意?在SQL和[user_name]阵列。


现在我们知道p_info_query的样子,我们也可以解决这个问题。你应该更新它看上去就像这样:

function p_info_query(sql, params, password, client_socket_id, player_info_object, callback) { 
    var result = mysql_client.query(sql, params, function (error, results, fields) { 
    // ... 

然后你可以这样说:

p_info_query(
    'SELECT * FROM ' + table_name + ' WHERE name = ?', 
    [user_name], 
    password, 
    client_connect.id, 
    p_info, 
    function(results) { /* ... */ } 
); 

使用的占位符。

+0

这会导致“错误:您的....正确的语法在附近使用时出错了吗?在第1行。p_info_query('SELECT * FROM'+ table_name +'WHERE user =?',[user_name],password,client_connect.id,p_info,function(results){是的,这只是我回调的一部分 – user1328762 2012-04-15 04:26:29

+0

什么这是'p_info_query'函数吗?它来自哪里? – 2012-04-15 04:29:55

+0

我刚刚更新。 – user1328762 2012-04-15 04:35:06