web-dev-qa-db-ja.com

JavaScriptはMySQLと接続できますか?

JavaScriptはMySQLと接続できますか?もしそうなら、どのように?

101

いいえ、JavaScriptはMySQLに直接接続できません。ただし、JSとPHPを混在させることができます。

JavaScriptはクライアント側の言語であり、MySQLデータベースはサーバー上で実行されます

23
konradowy

クライアント側のJavaScriptは、何らかのブリッジなしではMySQLにアクセスできません。ただし、JavaScriptは単なるクライアント側言語であるという上記の太字のステートメントは正しくありません。JavaScriptはNode.jsのようにクライアント側とサーバー側を実行できます。

Node.jsは https://github.com/sidorares/node-mysql2 のようなものを介してMySQLにアクセスできます。

Socket.IOを使用して何かを開発することもできます

クライアント側のJSアプリがMySQLにアクセスできるかどうかを尋ねるつもりですか?そのようなライブラリが存在するかどうかはわかりませんが、可能です。

EDIT:執筆以来、今では MySQL Cluster

Node.js用のMySQL Cluster JavaScriptドライバーは、見た目だけです。JavaScriptコードから直接呼び出してデータを読み書きできるコネクターです。データノードに直接アクセスするため、MySQLサーバーを通過する際の余分な遅延はなく、JavaScriptコード//オブジェクトからSQL操作に変換する必要があります。何らかの理由で、MySQLサーバーを通過したい場合(たとえば、InnoDBにテーブルを保存している場合)、それを設定できます。

79
LeeGee

その後

私は質問を理解し、間違っている場合は修正しますが、それはクライアント側でのみJavaScriptを使用したクラシックサーバーモデルを指します。 LAMPサーバー(Linux、Apache、MySQL、PHP)を使用したこの古典的なモデルでは、データベースに接続する言語はPHPであるため、 PHPスクリプトとechoを記述する必要があるデータベースへのデータクライアントへのデータ。基本的に、物理マシンによる言語の分布は次のとおりです。

  1. サーバー側:PHPおよびMySQL。
  2. クライアント側:HTML/CSSおよびJavaScript。

これは、次の機能があるMVCモデル(モデル、ビュー、コントローラー)に応答します。

  1. MODEL:モデルはデータを処理します。この場合、変数を管理する、または保存されたデータにアクセスするPHPスクリプト、この場合はMySQLデータベースでJSONデータとしてクライアントに送信します。
  2. VIEW:ビューは表示されるものであり、モデルから完全に独立している必要があります。モデルに含まれるデータを表示するだけでよいのですが、それに関連するデータがあってはなりません。この場合、ビューはHTMLとCSSを使用します。ビューの基本構造を作成するHTMLと、この基本構造に形状を与えるCSS。
  3. CONTROLLER:コントローラーは、モデルとビューの間のインターフェースです。この場合、使用される言語はJavaScriptであり、モデルがJSONパッケージとして送信するデータを取得し、HTML構造を提供するコンテナー内に配置します。コントローラーがモデルと対話する方法は、AJAXを使用しています。 GETおよびPOSTメソッドを使用して、サーバー側でPHPスクリプトを呼び出し、サーバーから返されたデータをキャッチします。

コントローラーには、HTML構造(DOM)を制御するための「低レベル」ライブラリーとしての jQuery のような非常に興味深いツールがあり、さらに Knockout.js これにより、イベント発生時にそれらを更新するさまざまなDOM要素を接続するオブザーバーを作成できます。 Angular.js もあります。これは同様の方法で機能しますが、完全な環境のようです。どちらかを選択できるように、2つのツールの2つの優れた分析があります: Knockout vs. Angular.js および Knockout.js vs. Angular.js 。私はまだ読んでいます。彼らがあなたを助けることを願っています。

NOW

Node.jsベースの最新のサーバーでは、すべてにJavaScriptを使用しています。 Node.jsは、Google V8、Chrome JavaScriptエンジンで動作する多くのライブラリを備えたJavaScript環境です。この新しいサーバーを使用する方法は次のとおりです。

  1. Node.js および Expressサーバーが構築されるメインフレーム。サーバーを数行のコードで作成したり、ライブラリをExpressとして使用して、サーバーの作成をさらに簡単にすることができます。 Node.jsとExpressを使用して、クライアントからサーバーへの請願を管理し、適切なページで回答します。
  2. Jadeページを作成するために、Webページを作成できるテンプレート言語(この場合はJade)を使用しますHTMLを書いていたので、違いがありました(少し時間がかかりますが、簡単に習得できます)。次に、クライアントの要求に応えるサーバーのコードで、Jadeコードを「実際の」HTMLコードにレンダリングするだけです。
  3. スタイラス ::Jadeに似ていますが、cssです。この場合、ミドルウェア関数を使用して、スタイラスファイルをページの実際のcssファイルに変換します。

次に、NPM(Node.jsパッケージマネージャー)を使用してインストールできるパッケージがたくさんありますNode.jsサーバーで直接それを必要とするだけです(Node.jsを学習したい人のために、これを試してください 初心者向けチュートリアル 概要について)。このパッケージの中には、データベースにアクセスするためのパッケージがいくつかあります。これを使用すると、サーバー側でJavaScriptを使用してMy SQLデータベースにアクセスできます。

しかし、Node.jsを使用する場合にできる最善の方法は、MongoDBのような新しいNoSQLデータベースを使用することです、JSONファイルに基づきます。 MySQLのようなテーブルを保存する代わりに、JSON構造にデータを保存します。そのため、最大のサイズの巨大なテーブルを作成する代わりに、長い数値ベクトルのように各構造内に異なるデータを配置できます。

この簡単な説明がお役に立てば幸いです。さらに詳しく知りたい場合は、ここに使用できるリソースがあります。

  • Egghead:このサイトには、JavaScriptとその環境に関する素晴らしい短いチュートリアルがたくさんあります。試してみる価値があります。そして、時々割引を行います。
  • コードスクール:テストに役立つChrome開発者ツールに関する無料の非常に興味深いコースクライアント側。
  • Codecademy:HTML、CSS、JavaScript、jQuery、およびPHPについての無料コースオンラインの例に従ってください。
  • 10gen Education:さまざまな言語のチュートリアルでMongoDBについて知っておく必要のあるすべてのものが揃っています。
  • W3Schools:これにはすべてのチュートリアルがあり、多くの短いので参照場所として使用できますコード例は本当に便利です。
  • dacity:さまざまなテーマに関する無料のビデオコースがあり、ウェブ開発に関する興味深いものがいくつかあります。 JavaScriptを使用した3DグラフィックスのWebGLコース。

更新!

現在、Nodeサーバーがあり、MySQLデータベースと通信する場合は、mysql。 PHPで行ったようにクエリを作成でき、APIジェネレーターを使用して試すことができますNPMを使用してダウンロードできます。使用するデータベースなどを選択できるウィザードがあります。

開始に役立つことを願っています。

楽しむ!

52
Timbergus

少し遅れましたが、最近、MySQL 5.7がユーザーがmysqlに直接接続できるhttpプラグインを取得したことがわかりました。

Mysql 5.7のHttpクライアントを探します

8
Atul Chaudhary

PHPのようなものを方程式に追加する必要があると思います。 PHPを使用してデータベースとやり取りすると、Javascriptを使用してAJAX呼び出しを行うことができます。

8
Kerry

簡単な答えは、いいえです。

JavaScriptはブラウザで実行されるクライアント側の言語で( node.js それにもかかわらず)、MySQLはサーバーで実行されるサーバー側の技術です。

つまり、通常、ASP.NETやPHPなどのサーバー側言語を使用してデータベースに接続します。

7
Dean Harding

はい?流星を見てください。リンク:

http://meteor.com/screencast および http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/

私はそれがどのように行われるか理解していません。しかし、Nettuts +はこのことをjavascript-ajaxセクションに入れました。おそらく魔法が起こるかもしれません。

また、次のように、JSを使用してMongoDBに接続して挿入する方法も示します。

Products.insert({Name : "Hammer", Price : 4.50, InStock : true});
Products.insert({Name : "Wrench", Price : 2.70, InStock : true});
Products.insert({Name : "Screw Driver", Price : 3.00, InStock : false});
Products.insert({Name : "Drill", Price : 5.25, InStock : true});
6
Ivan Wang

はい。 MySQL用のHTTPプラグインがあります。

http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/

私は今それについてグーグルで話しているだけで、このスタックオーバーフローの質問につながりました。現在または近い将来、MySQLデータベースをAJAXできるようになるはずです(本番の準備ができていないと主張しています)。

4
Nick Manning

環境によっては、Rhinoを使用してこれを行うことができます。 Rhinoウェブサイト を参照してください。これにより、JavaScript内からすべてのJavaライブラリにアクセスできます。

4
Kusmeroglu

DBSlayerPhpRestSQL など、MySQLの一部のサーバー側RESTfulラッパーにAJAXリクエストを送信できます。または AlsoSQL (for Drizzle 、MySQLのフォーク)。

1
niutech

通常、MySQLに接続するにはPHPなどのサーバー側スクリプト言語が必要ですが、簡単なモックアップを実行している場合は、 http://www.mysqljsを使用できます。 com 次のコードを使用してJavascriptからMySQLに接続します。

MySql.Execute(
    "mysql.yourhost.com", 
    "username", 
    "password", 
    "database", 
    "select * from Users", 
    function (data) {
        console.log(data)
});

これはMySqlにアクセスするための安全な方法ではなく、プライベートデモ、またはPhonegap iOSアプリ内などのエンドユーザーがソースコードにアクセスできないシナリオにのみ適していることに注意する必要があります。

0
Fiach Reid

はい、できます。 MySQLコネクタは、接続にTCPを使用します。JSには、Websocketと呼ばれるTCPクライアントの少し修正されたバージョンがあります。ただし、websocketを使用してMySQLサーバーに直接接続することはできません。 websocketとmysqlの間にサードパーティブリッジが必要になります。 websocketからクエリを受け取り、mysqlに送信し、結果を応答してJSに再送信します。

そして、これはwebsocket-sharpライブラリを備えたC#で書かれた私の例のブリッジです:

class JSQLBridge : WebSocketBehavior
{
    MySqlConnection conn;

    protected override void OnMessage(MessageEventArgs e)
    {
        if (conn == null)
        {
            try
            {
                conn = new MySqlConnection(e.Data);
                conn.Open();
            }
            catch (Exception exc)
            {
                Send(exc.Message);
            }
        }
        else
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand(e.Data, conn);
                cmd.ExecuteNonQuery();
                Send("success");
            }
            catch (Exception exc)
            {
                Send(exc.Message);
            }
        }
    }

    protected override void OnClose(CloseEventArgs e)
    {
        if (conn != null)
            conn.Close();
    }
}

JS側:

var ws = new WebSocket("ws://localhost/");

ws.send("server=localhost;user=root;database=mydb;");

ws.send("select * from users");
0
Brain Storm

JavaScriptはDBに直接接続して必要なデータを取得することはできませんが、AJAXを使用できます。サーバーへのAJAX要求を簡単に行うには、jQuery JSフレームワーク http://jquery.com を使用できます。ここに小さな例があります

JS:

jQuery.ajax({
type: "GET",
dataType: "json",
url: '/ajax/usergroups/filters.php',
data: "controller=" + controller + "&view=" + view,
success: function(json)
{
    alert(json.first);
    alert(json.second);
});

PHP:

$out = array(); 
$out['first']   = 'first value';
$out['second']   = 'second value';
echo json_encode($out);
0
Octan

Javaアプレットを介してJavascriptからMySQLに接続できます。 Javaアプレットは、MySQLへの接続を可能にするMySQL用のJDBCドライバーを埋め込みます。

リモートMySQLサーバー(アプレットをダウンロードしたサーバー以外)に接続する場合は、ユーザーにアプレットへの拡張アクセス許可の付与を依頼する必要があることに注意してください。デフォルトでは、アプレットはダウンロード元のサーバーにのみ接続できます。

0
Rajiv

MySQLでロックされていない場合は、PostgreSQLに切り替えることができます。データベース内のJavaScriptプロシージャ(PL/V8)をサポートします。非常に高速で強力です。これを確認してください post

0
ramigg

いや.

PHPでラッパーを作成し、返されたデータを(おそらくJsonとして)エクスポートする必要があります。これはSQLインジェクションと呼ばれるため、決して「_GET」からSQLコードを取得しないでください(これを学んだ人はデータベースを完全に制御できます)。

これは私が書いた例です:

function getJsonData()
{
        global $db;
        if (!$db->isConnected()) {
               return "Not connected";
        }
        $db->query("SELECT * FROM entries");
        $values = array();
        while( $v = $db->fetchAssoc()){
                $values[] = $v;
        }
        return json_encode($values);    
}

switch (@$_GET["cmd"]){
        case 'data':
                print getJsonData();
                exit;

        default:
                print getMainScreen();
                exit; 
}

SQLインジェクションについて学んでください。

0
elcuco