3

データベースのクエリに ajax 呼び出しを使用しています。複雑な SQL クエリを ajax データの一部として渡したいです。これは私がやるべき方法ですか?

var myQuery = 'select * from table....';        

$.ajax({
    type: "GET",
    url: 'jsonQuery.php',
    dataType: 'json',
    data: {keyvalue: 2416, q: myQuery},
    success: function(pieData) {
        //do something with the response        
    }

});
4

3 に答える 3

4

はい、もっと良い方法があります。ページにクエリを保持し、使用する.phpものを示す投稿タイプを送信します。

例:

data: {keyvalue: 2416, q: 2},

次に、番号 2 に対応するクエリを取得して、それを使用します。SQL を渡す必要はありません。

于 2013-02-12T16:28:42.277 に答える
1

これらの他の人が言うように、絶対に AJAX 呼び出しで直接 SQL を送信しないでください。ハッカーは、独自の SQL クエリを簡単に作成して、データベースで実行したいコードを実行できます。代わりに、POST を介して、フィルター処理するいくつかの異なるフィールド値を渡すことができます (たとえば、「名前」値、「キー」、または「年齢範囲」)。次に、受信側で PHP を設定して、これらの値をいつ使用するかを判断します。キーが存在する場合は、それを識別子として使用し、クエリ X を使用します。キーが存在しない場合は、名前またはその他の値を確認して正しい行を検索し、それらをクエリ Y に挿入します。

IngodItrust が言うように、使用するクエリを指定する POST 値を送信することもできます。

q: 'LongerQuery'

次に、受信側の PHP で、存在する Q 値に応じて異なるクエリを準備するいくつかの IF または CASE ステートメントを用意します。

私のサイトにはグラフ ジェネレーターがあり、ユーザーは、X 軸と Y 軸にどのデータを配置するか、データを異なるシリーズに分割するかどうか、およびユーザーがデータのみを見たい場合にデータ プールをフィルター処理する方法の設定を変更できます。特定の人口統計。これらの設定は、ユーザーが [生成] ボタンをクリックすると、AJAX/POST を介して送信されます。受信 PHP ページは、これらの 20 個の入力に基づいてチャート データ クエリを作成します。結果として得られるクエリは、ユーザーが選択した設定に応じてまったく異なるものになる可能性があります。これは、AJAX を使用して、セキュリティ リスクを発生させることなく、非常に柔軟でユーザー応答性の高いクエリを作成できることを示すために説明しています。

于 2013-02-12T16:53:45.757 に答える
0

jsonQuery.php に直接 SQL を渡すべきではありません。これを行うと、SQL インジェクション攻撃を受ける可能性があります。用語をググるだけのhttp://bobby-tables.com/を参照してください。

代わりに、パラメーターをスクリプトに渡します (例: jsonQuery.php?do=SEARCH&itemID=12&type=RED_ONES)。これらのパラメーターを使用して、jsonQuery.php 内にクエリを作成します。ただし、前に期待値についてそれぞれを確認してください..

于 2013-02-12T16:31:39.800 に答える