Czy JavaScript może łączyć się z MySQL?

Czy JavaScript może łączyć się z MySQL? Jeśli tak, to w jaki sposób?

Author: Konerak, 2010-06-11

18 answers

Nie, JavaScript nie może bezpośrednio połączyć się z MySQL. Ale możesz mieszać JS z PHP, aby to zrobić.

JavaScript jest językiem po stronie klienta, a baza danych MySQL będzie działać na serwerze

 23
Author: konradowy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-11 06:57:05

JavaScript po stronie klienta nie może uzyskać dostępu do MySQL bez jakiegoś mostu. Jednak powyższe pogrubienie stwierdzające, że JavaScript jest tylko językiem po stronie klienta, jest nieprawidłowe-JavaScript może uruchamiać po stronie klienta i po stronie serwera, tak jak w przypadku Node.js.

Node.js może uzyskać dostęp do MySQL poprzez coś w rodzaju https://github.com/sidorares/node-mysql2

Możesz również rozwinąć coś za pomocą Socket.IO

Czy chciałeś zapytać, czy aplikacja js po stronie klienta może uzyskać dostęp do MySQL? Nie jestem. oczywiście, jeśli takie biblioteki istnieją, ale są one możliwe.

EDIT: od napisania mamy teraz MySQL Cluster :

Sterownik JavaScript klastra MySQL dla węzła.js jest po prostu tym, jak to brzmi – jest to złącze, które można wywołać bezpośrednio z kodu JavaScript do odczytu i zapisu danych. Ponieważ uzyskuje bezpośredni dostęp do węzłów danych, nie ma dodatkowych opóźnień od przechodzenia przez serwer MySQL i trzeba przekonwertować z kodu JavaScript//obiekty na Operacje SQL. Jeśli z jakiegoś powodu wolisz, aby przechodziła przez serwer MySQL (na przykład, jeśli przechowujesz tabele w InnoDB), możesz to skonfigurować.

 71
Author: LeeGee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-14 12:13:00

THEN

Ponieważ rozumiem pytanie i poprawiam, jeśli się mylę, odnosi się ono do klasycznego modelu serwera z JavaScript tylko po stronie klienta. W tym klasycznym modelu, z serwerami LAMP (Linux, Apache, MySQL, PHP) językiem styku z bazą danych jest PHP, więc aby zażądać danych do bazy danych musisz napisać skrypty PHP i echo zwracanie danych do klienta. Zasadniczo rozkład języków według maszyn fizycznych jest:

  1. strona serwera: PHP i MySQL.
  2. strona klienta: HTML / CSS i JavaScript.

Odpowiada to modelowi MVC (Model, widok, kontroler), w którym mamy następującą funkcjonalność:

  1. MODEL: model jest tym, co dotyczy danych, w tym przypadku skryptów PHP, które zarządzają zmiennymi lub dostęp do danych przechowywanych, w tym przypadku w naszej bazie danych MySQL i wysłać go jako dane JSON do klient.
  2. widok: widok jest tym, co widzimy i powinien być całkowicie niezależny od modelu. Musi tylko pokazać dane zawarte w modelu, ale nie powinien mieć na nim odpowiednich danych. W tym przypadku Widok wykorzystuje HTML i CSS. HTML, aby utworzyć podstawową strukturę widoku, i CSS, aby nadać kształt tej podstawowej strukturze.
  3. kontroler: kontroler jest interfejsem pomiędzy naszym modelem a naszym widokiem. W tym przypadku językiem używanym jest JavaScript i pobiera dane, które model wysyła nam jako pakiet JSON i umieszcza je wewnątrz kontenerów, które oferują strukturę HTML. Sposób interakcji kontrolera z modelem jest za pomocą AJAX . Używamy metod GET i POST do wywoływania skryptów PHP po stronie serwera i przechwytywania zwracanych danych z serwera.

Dla kontrolera mamy naprawdę ciekawe narzędzia, takie jak jQuery , jako" niskopoziomowa " biblioteka do sterowania strukturą HTML (DOM), a następnie nowe, bardziej wysokopoziomowe jak nokaut.js , które pozwalają nam tworzyć obserwatory, które łączą różne elementy DOM aktualizując je w przypadku wystąpienia zdarzeń. Istnieje również kątowe.js by Google, który działa w podobny sposób, ale wydaje się być kompletnym środowiskiem. Aby pomóc Ci wybrać spośród, tutaj są dwie doskonałe analizy dwóch narzędzi: Knockout vs. Angular.js i nokaut.js vs. Angular.js . Wciąż czytam. Mam nadzieję, że pomogą ty.

Teraz

W nowoczesnych serwerach opartych na Node.js, do wszystkiego używamy JavaScript. Węzeł.js to środowisko JavaScript z wieloma bibliotekami, które współpracują z Google V8, Chrome JavaScript engine. Sposób pracy z tym nowym serwerem to:

  1. węzeł.js i Express: ramka główna, w której zbudowany jest serwer. Możemy stworzyć serwer z kilkoma linijkami kodu lub nawet użyć bibliotek jako Express, aby jeszcze łatwiej stworzyć serwer. Z Węzłem.js I Express, będziemy zarządzać petycjami do serwera od klientów i odpowiemy na nie odpowiednimi stronami.
  2. Jadeit: do tworzenia stron używamy języka szablonów, w tym przypadku Jade, który pozwala nam pisać strony internetowe tak, jak pisaliśmy HTML, ale z różnicami (zajmuje to trochę czasu, ale jest łatwe do nauczenia się). Następnie, w kodzie serwera, aby odpowiedzieć na petycje klienta, musimy tylko renderować Kod Jade do" prawdziwego " HTML kod.
  3. Rysik: podobne do Jade, ale do css. W takim przypadku używamy funkcji middleware, aby przekonwertować plik Stylusa na prawdziwy plik css dla naszej strony.

Wtedy mamy wiele pakietów, które możemy zainstalować używając NPM (węzeł.js package manager) i używać ich bezpośrednio w naszym węźle.js server tylko tego wymaga (dla tych z Was, którzy chcą się nauczyć Node.js, spróbuj tego Tutorial dla początkujących dla przeglądu). A wśród tych pakietów, niektóre z nich mają dostęp do baz danych. Korzystając z tego możesz użyć JavaScript po stronie serwera, aby uzyskać dostęp do moich baz danych SQL.

Ale najlepsze, co możesz zrobić, jeśli zamierzasz pracować z Node.js ma korzystać z nowych baz danych NoSQL jak MongoDB, na podstawie plików JSON. Zamiast przechowywania tabel, takich jak MySQL, przechowuje dane w strukturach JSON, dzięki czemu można umieścić różne dane wewnątrz każdej struktury, takie jak długie wektory numeryczne, zamiast tworzenia ogromnych tabel o rozmiarze największy.

Mam nadzieję, że to krótkie wyjaśnienie stanie się dla Ciebie przydatne, a jeśli chcesz dowiedzieć się więcej na ten temat, tutaj masz kilka zasobów, z których możesz skorzystać:

  • Egghead: Ta strona jest pełna świetnych krótkich samouczków na temat JavaScript i jego środowiska. Warto spróbować. I zrobić rabaty od czasu do czasu.
  • Code School: darmowy i bardzo ciekawy kurs na temat narzędzi programistycznych Chrome, który pomoże Ci przetestować po stronie klienta.
  • Codecademy: z darmowymi kursami na temat HTML, CSS, JavaScript, jQuery i PHP, które możesz śledzić za pomocą przykładów online.
  • 10gen Edukacja: wszystko, co musisz wiedzieć o MongoDB, znajdziesz w samouczkach dla różnych języków.
  • W3Schools: ten ma samouczki na temat tego wszystkiego i możesz go użyć jako miejsca odniesienia, ponieważ ma wiele krótkich przykładów kodu przydatne.
  • Udacity: miejsce z darmowymi kursami wideo na różne tematy z kilkoma ciekawymi o tworzeniu stron internetowych i moim ulubionym, niesamowitym kursem WebGL do grafiki 3D z JavaScript.

Aktualizacja!

Teraz, mając Serwer węzłów, jeśli chcesz komunikować się z bazą danych MySQL, możesz skorzystać z biblioteki o nazwie mysql. Możesz tworzyć zapytania tak jak w PHP i możesz spróbować używając generator API stworzyłem, że można pobrać za pomocą NPM. Posiada kreator, który pozwala między innymi wybrać, z jakich baz danych chcesz korzystać.

Mam nadzieję, że to pomoże Ci zacząć.

Miłej zabawy!

 50
Author: Timbergus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-25 17:01:42

Myślę, że trzeba by dodać coś takiego jak PHP do równania. PHP do interakcji z bazą danych, a następnie można wykonywać połączenia AJAX z Javascript.

 8
Author: Kerry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-11 06:57:37

Prosta odpowiedź brzmi: nie.

JavaScript jest językiem po stronie klienta, który działa w węźle przeglądarki (.JS) i MySQL jest technologią po stronie serwera, która działa na serwerze.

Oznacza to, że zazwyczaj używasz języka po stronie serwera, takiego jak ASP.NET lub PHP, aby połączyć się z bazą danych.

 7
Author: Dean Harding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-11 06:57:44

Trochę późno, ale ostatnio dowiedziałem się, że MySql 5.7 dostał http plugin throuh który użytkownik może bezpośrednio połączyć się z mysql teraz.

Poszukaj klienta Http dla mysql 5.7

 7
Author: Atul Chaudhary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-03 02:03:16

Tak? Spójrz na meteor. Linki:

Http://meteor.com/screencast i http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/

Nie rozumiem, jak to się robi. Ale Nettuts + wrzuć to do sekcji javascript-ajax, może Magia się zdarzy.

Pokazuje również sposób podłączenia i wstawienia do MongoDB za pomocą JS, jak to:

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
Author: Ivan Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-11 19:52:16

W zależności od środowiska, możesz użyć Rhino, aby to zrobić, zobacz strona Rhino . Daje to dostęp do wszystkich bibliotek Java z poziomu JavaScript.

 4
Author: Kusmeroglu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-11 20:11:15

Tak. Istnieje wtyczka HTTP dla MySQL.

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

Właśnie googluję o tym teraz, co doprowadziło mnie do tego pytania stackoverflow. Powinieneś być w stanie AJAX bazy danych MySQL teraz lub w najbliższej przyszłości (twierdzą, że nie jest gotowy do produkcji).

 4
Author: Nick Manning,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-24 18:13:45

Można wysyłać żądania AJAX do niektórych serwerowych Wrapperów RESTful dla MySQL, takich jak DBSlayer, PhpRestSQL lub AlsoSQL (dla Drizzle , fork MySQL).

 1
Author: niutech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-10 15:02:07

Nie.

Musisz napisać wrapper w PHP, a następnie wyeksportować zwrócone dane (prawdopodobnie jako Json). Nigdy nie pobieraj ze swojego" _GET " kodu SQL, ponieważ nazywa się to iniekcją SQL (ludzie, którzy się tego nauczą, będą mieli pełną kontrolę nad twoją bazą danych).

Oto przykład, który napisałem:

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; 
}

Czy dowiedzieć się o SQL Injection proszę.

 0
Author: elcuco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-11 07:00:58

Możesz połączyć się z MySQL z Javascript za pomocą apletu JAVA. Aplet JAVA osadza sterownik JDBC dla MySQL, który pozwoli Ci połączyć się z MySQL.

Pamiętaj, że jeśli chcesz połączyć się ze zdalnym serwerem MySQL (innym niż ten, z którego pobrałeś aplet), musisz poprosić użytkowników o przyznanie rozszerzonych uprawnień do apletu. Domyślnie aplet może łączyć się tylko z serwerem, z którego został pobrany.

 0
Author: Rajiv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-10 20:30:34

JavaScript nie może połączyć się bezpośrednio z DB, aby uzyskać potrzebne dane, ale można użyć AJAX. Aby ułatwić Ajax request to server można użyć jQuery JS framework http://jquery.com. Oto mały przykład

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
Author: Octan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-18 13:18:45

Jeśli nie jesteś zablokowany na MySQL możesz przełączyć się na PostgreSQL. Obsługuje procedury JavaScript (PL/V8) wewnątrz bazy danych. Jest bardzo szybki i potężny. Sprawdź ten post .

 0
Author: ramigg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-13 05:16:28

Zazwyczaj potrzebujesz języka skryptowego po stronie serwera, takiego jak PHP, aby połączyć się z MySQL, jednak jeśli robisz tylko szybką makietę, możesz użyć http://www.mysqljs.com aby połączyć się z MySQL z Javascript za pomocą kodu w następujący sposób:

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

Należy wspomnieć, że nie jest to bezpieczny sposób dostępu do MySql i jest odpowiedni tylko dla prywatnych wersji demonstracyjnych lub scenariuszy, w których kod źródłowy nie może być dostępny dla użytkowników końcowych, na przykład w aplikacjach Phonegap iOS.

 0
Author: Fiach Reid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 17:07:46

Zrozumiałem twoje pytanie. myślę, że mylisz je z językami takimi jak dot.net i java, gdzie można otworzyć połączenie DB w kodzie. Nie, JavaScript nie może łączyć się bezpośrednio z MySQL, ponieważ JavaScript jest językiem skryptowym po stronie klienta (węzeł wyjątku.js).Potrzebujesz warstwy środkowej, takiej jak RESTful API, aby uzyskać dostęp do danych.

 -1
Author: Sagittarius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-03 10:53:08

Tak, możesz. MySQL connectors używa TCP do połączenia, a w JS jest trochę zmodyfikowana wersja klienta TCP o nazwie Websocket. Ale nie można bezpośrednio połączyć się z serwerem MySQL za pomocą websocket. Będziesz potrzebował zewnętrznego mostu między websocket a mysql. Otrzymuje zapytanie z websocket, wysyła je do mysql, wynik odpowiedzi i ponownie wysyła do JS.

A oto mój przykładowy bridge napisany w C# z biblioteką websocket-sharp:

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 side:

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

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

ws.send("select * from users");
 -1
Author: Brain Storm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-07 21:31:19

Możesz dodać połączenie mysql za pomocą pliku PHP. Poniżej znajduje się przykład pliku PHP.

<?php
   $con = mysql_connect('localhost:3306', 'dbusername', 'dbpsw');
   mysql_select_db("(dbname)", $con);

   $sql="SELECT * FROM table_name";

   $result = mysql_query($sql);

   echo " <table border='1'>
   <tr>
   <th>Header of Table name</th>
   </tr>";

   while($row = mysql_fetch_array($result))
   {
     echo "<tr>";
     echo "<td>" . $row['(database_column_name)'] . "</td>";
     echo "<td>" . $row['database_column_name'] . "</td>";
     echo "</tr>";
    }
    echo "</table>";
    mysql_close($con);
   ?> }
 -4
Author: Shivu09,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-04 10:59:24