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

Это, похоже, создает Неизвестную колонку «имя_пользователя». Я искал в Интернете некоторые примеры людей, которые это делали, но я не мог найти их. Я хочу запросить конкретные вещи, возможно, даже сравнить 2 значения, пользователя и пароль.Кажется, что не запрашивает конкретные вещи с помощью node-mysql с JavaScript

Любая помощь?

// отредактирована для функции 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 - переменная, которая содержит имя пользователя, к которому клиент хотел войти. – user1328762

ответ

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

+0

Что это функция 'p_info_query'? Откуда она взялась? –

+0

Я только что обновил. – user1328762

 Смежные вопросы

  • Нет связанных вопросов^_^