2016-12-20 10 views
-1

JavaScriptでしかプログラミングされていないので、今はいくつかのデータベースで作業してSQLを学びたいと思います。 AJAXオープンに示さjavaScript AJAXリクエスト内のSQL文

xhttp= new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
    //something 
    } 
}; 
var sql = 'SELECT * FROM Customers'; //creating SQL statements in JS like this 
xhttp.open("GET", "getFromDatabase.php?q="+sql, true); 
xhttp.send(); 

//PHP: 
$result = mysqli_query($con,$q); 
echo $result; 

の代わりに、PHPファイル内のすべての必要なSQL文を維持し、生成:それは一般的で安全な態度であれば、私はこのような、たとえば、AJAX要求でSQL文を送信するために、思ったんだけど()のように: - PHPを知らないと、この時点で勉強したくない

xhttp= new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
    //something 
    } 
}; 
xhttp.open("GET", "getFromDatabase.php?q=getCustomers", true); 
xhttp.send(); 

//PHP: 
if ($q==="getCustomers") { 
    $sql="SELECT * FROM Customers"; //here are ALL SQL statements 
    $result = mysqli_query($con,$sql); 
    echo $result; 
} 

私が読んだインターネット上のすべてのチュートリアルとサンプルは、第二attitubeが、私のためを好みます - 最初の(JS)態度は、データベースを扱う方法を学び、テストするためだけに簡単です。それで、JSONをいくつかのデータで返し、他のものはすべてJavaScriptで返すための単純なPHPファイルを作成することができました。

+2

これはあなたのデータベース全体を盗んだり、削除したりする方法です...これをしないでください...誰でもSQLリクエストを実行できる人がいなければ、PHPに入れておく必要があります。 – epascarello

+1

誰かがコンソールを開いて、「DROP TABLE Customers」という文でリクエストを実行します –

+1

悪意のある人がこのタイプのコードを修正して悪用できるようになり、データを取得できます漏れた –

答えて

0

まあ...私はフラグを使用することをお勧めします... PHPでさまざまなクエリを実行するためのajaxリクエストで異なるフラグを送信する... PHPスクリプトはフラグを取得し、実行するクエリを決定します...

+0

OPのアイデアよりもずっと優れていますが、運用中に200または300のクエリを実行すると、これを維持するのは苦痛です。 – Doug

2

答えは「いいえ」です。しないでください。これは、SQLインジェクション攻撃や他のセキュリティ不安なものに対してデータベースを開くものです。

SQLの使い方を知りたい場合は、PHP、Node.js、PythonなどでRESTfulなサービスを作成し、言語を学び、バックエンドでSQLを実行します。

UIの文字列をパラメータ化せずにデータベースに直接渡すことは避けてください。

関連する問題