2012-04-15 37 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

相關問題