2017-03-23 8 views
0

たとえば、私は登録フォームを持っており、詳細を送信するためのボタンもあります。ボタンをクリックすると、それらをmysqlデータベースに送信します。残念ながら、私はserver.jsでdbクエリを実行する方法しか知りませんが、どのスクリプトでそれを行うのですか?以下は、動作しない方法です。Node.js + MySQL - > server.jsの外部からdbクエリを作成しますか?

$("button#submit").click(function() { 
    var username = $('#usr').val(); 
    var password = $('#pwd').val(); 

    db.query("INSERT OR REPLACE INTO user_data (username, password) VALUES (" + username + "," + password + ")"); 
    //// something like this 
}) 
+0

上記のコードは、ブラウザ環境で動作しているようですが、Node.jsでは*ではありません。 ご使用のブラウザの環境では、Node.jsコードが認識されません。 –

+0

上記のクエリは、SQLインジェクションの攻撃とエラーに対して**広く開かれています**。参照:http://bobby-tables.com。パラメータ化されたクエリを使用します。 –

答えて

1

フロントエンドからmySqlデータベースに対してクエリを実行することはできません。それは大きなセキュリティ上の問題になるでしょう。値をバックエンドに送り返してそこからデータベースに値を問い合わせる必要があります。

また、準備済みの文を使用するようにしてください。あなたのクエリは、mysqlインジェクションに対して広く公開されています。

enter image description here

あなたはmysql.format()とノード-mysqlの使用してプリペアドステートメントを実行することができます:クエリの翻訳

var sql = "SELECT * FROM ?? WHERE ?? = ?"; 
var inserts = ['users', 'id', userId]; 
sql = mysql.format(sql, inserts); 

、これは私がINSERT OR REPLACEを変更

let query = "REPLACE INTO user_data (username, password) VALUES (?,?)"; 
let inserts = [username, password]; // however you obtain them in the backend 
mysql.query(mysql.format(query, inserts)); 

注だろうREPLACE、構文エラーでした。

+0

フロントエンドからサーバー上のデータを使ってajax呼び出しを行う必要があります。 http://stackoverflow.com/questions/19015897/jquery-ajax-simple-call – baao

+0

私は理解していますが、server.jsにどのようなクエリを行うべきかを教えてください。例えば、$( 'button#submit')。(function(){///プリペアドステートメントをサーバーに送ります});サーバーで実行しますか? – Caitiff

+0

私がAJAX呼び出しを行っても。 – Caitiff

関連する問題