2010-06-11 2 views
83

Может ли JavaScript подключаться к MySQL? Если да, то как?Может ли JavaScript подключаться к MySQL?

+0

нет, если вы не не говорим о о JavaScript в браузера. –

+2

Что касается JavaScript на стороне сервера (например, через Rhino)? мы можем подключиться к базе данных? – Joand

+6

Или Node.js тоже будет работать –

ответ

18

Нет, JavaScript не может непосредственно подключаться к MySQL. Но вы можете смешать JS с PHP для этого.

JavaScript является языком стороне клиента и база данных MySQL будет запущен на сервере

+2

Спасибо, как бы я это сделал? –

+68

Небольшое примечание: тот факт, что JavaScript работает на стороне клиента, не имеет ничего общего с тем фактом, что он не может подключиться к серверу баз данных. Было бы очень хорошо (хотя и маловероятно), что будущая версия языка добавит API для доступа к удаленным базам данных. –

+3

Я бы не назвал это «mix JS with PHP». То, что вы можете сделать, это позволить PHP Code генерировать код/​​данные JavaScript (json, например), который он получил из MySQL заранее. Или вы можете использовать PHP на сервере, чтобы предоставить интерфейс http (json/REST/SOAP/... любой) для доступа к данным, которые PHP-код извлекает из MySQL, и этот http-интерфейс можно вызывать с помощью кода JavaScript, главным образом, в качестве члена семьи. На сегодняшний день, также говоря, что JavaScript является клиентской стороной, больше не существует - например, проверьте Node.js. – Henning

8

Я думаю, что вам будет нужно добавить что-то вроде PHP в уравнение. PHP для взаимодействия с базой данных, а затем вы можете совершать AJAX-вызовы с помощью Javascript.

6

Простой ответ: нет.

JavaScript - это клиентский язык, который работает в браузере (node.js), и MySQL - это серверная технология, которая работает на сервере.

Это означает, что вы обычно используете серверный язык, например ASP.NET или PHP, для подключения к базе данных.

+0

Javascript (на стороне клиента, форма браузера) используется каждый день для подключения к серверным технологиям (Apache, Nginx , PHP, NodeJS и т. Д.), Запущенных на сервере. Само определение сервера/клиента требует, чтобы «разделение» между ними было преодолимым. – jeteon

0

No.

Вам нужно написать обертку в PHP, а затем экспортировать полученные данные (вероятно, Json). НИКОГДА не получите от «_GET» код SQL, так как это называется инъекцией 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

JavaScript не может подключиться непосредственно к БД для получения необходимых данных, но вы можете использовать AJAX. Чтобы сделать простой запрос AJAX на сервер, вы можете использовать jQuery JS framework 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); 
+1

Где запрос MySQL в этом примере? – Michael

+0

@Michael: Отличный вопрос. –

0

Вы можете подключиться к MySQL из Javascript через JAVA апплет. Апплет JAVA встроил бы JDBC-драйвер для MySQL, который позволит вам подключиться к MySQL.

Помните, что если вы хотите подключиться к удаленному серверу MySQL (кроме того, из которого вы загрузили апплет), вам нужно попросить пользователей предоставить расширенные разрешения апплетам. По умолчанию апплет может подключаться только к серверу, с которого они загружаются.

4

В зависимости от вашей среды вы можете использовать Rhino для этого, см. Rhino website. Это дает вам доступ ко всем библиотекам Java из JavaScript.

6

ДА? Посмотрите метеор. Ссылки:

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

Я не понимаю, как это делается.Но Nettuts + помещает это в раздел javascript-ajax, возможно, происходит магия.

Это также показывает некоторый способ соединения и вставки в MongoDB с JS, как это:

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}); 
+1

«Вы можете заменить другую базу данных для MongoDB, предоставив серверный драйвер базы данных и/или кеш-клиент на стороне клиента, который реализует альтернативный API.Mongo-livingata является хорошей отправной точкой для такого проекта ». - http://docs.meteor.com/ – LeeGee

66

стороне клиента JavaScript не может получить доступ к MySQL без какого-либо моста. Но приведенные выше смелые утверждения о том, что JavaScript - это просто язык на стороне клиента, неверны - JavaScript может работать как на стороне клиента, так и на стороне сервера, как и на Node.js.

Node.js может получить доступ к MySQL через что-то вроде https://github.com/sidorares/nodejs-mysql-native

Вы можете также разработать что-то с помощью Socket.io

вы имели в виду, чтобы спросить, может ли JS приложение на стороне клиента доступ к MySQL? Я не уверен, существуют ли такие библиотеки, но они возможны.

EDIT: С момента написания, мы теперь имеем MySQL Cluster:

Драйвер MySQL Cluster JavaScript для Node.js является только то, что это звучит, как это - это разъем, который может быть вызван непосредственно из вашего JavaScript-код для чтения и записи ваших данных. Поскольку он напрямую обращается к узлам данных, нет дополнительной задержки от прохождения через сервер MySQL и необходимо преобразовать из JavaScript-кода // объекты в операции SQL. Если по какой-то причине вы предпочли бы, чтобы он проходил через сервер MySQL (например, если вы храните таблицы в InnoDB), то это можно настроить.

0

Если вы не заблокированы в MySQL, вы можете переключиться на PostgreSQL. Он поддерживает процедуры JavaScript (PL/V8) внутри базы данных. Он очень быстрый и мощный. Оформить заказ post.

46

ТОГДА

Как я понимаю, вопрос и поправьте меня, если я ошибаюсь, это относится к классической модели сервера с JavaScript только на стороне клиента. В этой классической модели с LAMP серверами (Linux, Apache, MySQL, PHP) языком, связанным с базой данных, является PHP, поэтому для запроса данных в базу данных вам нужно написать PHP-скрипты и echo возвращение данные клиенту. В принципе, распределение языков в соответствии с физическими машинами: Боковое

  1. Сервера: PHP и MySQL.
  2. Сторона клиента: HTML и CSS и JavaScript.

Это отвечает на модели MVC (Model, View, Controller), где мы имеем следующую функциональность:

  1. МОДЕЛЬ: Модель, что имеет дело с данными, в данном случае, PHP-скрипты, которые управляют переменными или которые получают доступ к данным, хранящимся в данном случае в нашей базе данных MySQL, и отправляют клиенту данные JSON.
  2. VIEW: Вид - это то, что мы видим, и оно должно быть полностью независимым от модели.Он просто должен показать данные, содержащиеся в модели, но не должен иметь соответствующих данных. В этом случае представление использует HTML и CSS. HTML, чтобы создать основную структуру представления и CSS, чтобы придать форму этой базовой структуре.
  3. КОНТРОЛЛЕР: Контроллер - это интерфейс между нашей моделью и нашим представлением. В этом случае используемым языком является JavaScript, и он принимает данные, которые модель отправляет нам как пакет JSON, и помещает их в контейнеры, которые предлагают структуру HTML. То, как контроллер взаимодействует с моделью, использует AJAX. Мы используем GET и POST методы вызова PHP-скриптов на стороне сервера и улавливания возвращаемых данных с сервера.

Для контроллера у нас действительно интересные инструменты, такие как jQuery, так как библиотека «низкого уровня», чтобы контролировать структуру HTML (DOM), а затем новые, более высокие из них уровня, как Knockout.js, которые позволяют нам создавать наблюдателям, что подключайте различные элементы DOM, обновляя их при возникновении событий. Существует также Angular.js от Google, который работает аналогичным образом, но, кажется, является полной средой. Чтобы помочь вам выбрать среди них, здесь есть два отличных анализа двух инструментов: Knockout vs. Angular.js и Knockout.js vs. Angular.js. Я все еще читаю. Надеюсь, они вам помогут.

СЕЙЧАС

В современных серверах, базирующихся в Node.js, мы используем JavaScript для всего. Node.js - это среда JavaScript со многими библиотеками, которые работают с Google V8, движком JavaScript JavaScript. Как мы работаем с этими новыми серверами:

  1. Node.js и Express: Основным кадром, где построен сервер. Мы можем создать сервер с несколькими строками кода или даже использовать библиотеки Express, чтобы сделать еще проще создание сервера. С помощью Node.js и Express мы будем управлять петициями на сервере у клиентов и ответим на них соответствующими страницами.
  2. Jade: Для создания страниц мы используем язык шаблонов, в данном случае Jade, который позволяет нам писать веб-страницы по мере того, как мы пишем HTML, но с различиями (это занимает немного времени, но легко учиться) , Затем, в коде сервера, чтобы отвечать на запросы клиентов, нам просто нужно отобразить Jade-код в «настоящий» HTML-код.
  3. Stylus: Подобно Jade, но для css. В этом случае мы используем функцию промежуточного программного обеспечения для преобразования файла стилуса в настоящий файл css для нашей страницы.

Тогда у нас есть много пакетов, мы можем установить с помощью NPM (менеджер пакетов Node.js) и использовать их непосредственно на нашем сервере Node.js просто требуя его (для тех из вас, которые хотят узнать, Node.js, попробуйте это beginner tutorial для обзора). И среди этих пакетов у вас есть некоторые из них для доступа к базам данных. Используя это, вы можете использовать JavaScript на стороне сервера для доступа к базам данных My SQL.

Но лучшее, что вы можете сделать, если вы собираетесь работать с Node.js, чтобы использовать новые базы данных NoSQL как MongoDB, на основе JSON файлов. Вместо хранения таких таблиц, как MySQL, он хранит данные в структурах JSON, поэтому вы можете поместить разные данные внутри каждой структуры, такие как длинные числовые векторы, вместо этого создавая огромные таблицы для размера самого большого.

Я надеюсь, что это краткое описание будет полезным для вас, и если вы хотите узнать больше об этом, здесь у вас есть какие-то ресурсы, которые можно использовать:

  • Egghead: Этот сайт полон большой короткий учебники о JavaScript и его среде. Это стоит попробовать. И делать скидки время от времени.
  • Code School: С бесплатным и очень интересным курсом о инструментах Chrome Developer, которые помогут вам протестировать клиентскую сторону.
  • Codecademy: С бесплатными курсами по HTML, CSS, JavaScript, jQuery и PHP, с которыми вы можете ознакомиться с онлайн-примерами.
  • 10gen Education: Все, что вам нужно знать о MongoDB в учебниках для разных языков.
  • W3Schools: У этого есть учебники обо всем этом, и вы можете использовать его в качестве ссылочного места, потому что у него есть много коротких примеров кода, действительно полезных.
  • Udacity: Место с бесплатными видеокурсами по различным темам с несколькими интересными о веб-разработке и моем предпочтительном, изумительном курсе WebGL для 3D-графики с JavaScript.

ОБНОВЛЕНИЕ!

прямо сейчас, сервер узла, если вы хотите общаться с базой данных MySQL, вы можете использовать библиотеку под названием mysql. Вы можете создавать запросы так же, как и с PHP, и можете попробовать это с помощью API generator Я создал, что вы можете скачать с помощью NPM. У этого есть мастер, который позволяет вам выбирать, какие базы данных вы хотите использовать, между прочим.

Надеюсь, это поможет вам начать.

Удачи!

+0

Хороший подробный ответ, объясняющий механику. – Duane

+0

Спасибо :) Я только что добавил обновление до конца ответ на решение проблемы. Вы можете использовать сервер узлов с библиотекой под названием «mysql», и я добавил ссылку на созданный мной генератор API, который вы можете использовать для запуска нового проекта API. Надеюсь, он поможет. – Timbergus

+0

Re "then": JavaScript используется на стороне сервера, начиная с 1995 года, когда он был включен в Netscape Enterprise Server. Microsoft вскоре добавит «JScript» на свой сервер IIS. JavaScript на сервере не удален, но удален. –

7

Бит поздно, но недавно я узнал, что MySql 5.7 получил HTTP-плагин, который пользователь может напрямую подключиться к mysql.

Look для клиента Http для MySQL 5.7

-4

Вы можете добавить соединение MySQL с помощью PHP-файл. Ниже приведен пример файла 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); 
    ?> } 
+0

Фактически , это не ответ. Вопрос: «Может ли JavaScript подключаться к MySQL?». –

+0

Это нулевой процент, имеющий отношение к заданному вопросу. Автор вопроса был очень специфичен в Javascript. – geekgugi

-1

Я понял ваш вопрос, я думаю, что вы путаете его с языками, как dot.net и Java, где вы можете открыть DB соединение в пределах кода. Нет, JavaScript не может напрямую подключаться к MySQL, поскольку JavaScript - это язык сценариев на стороне клиента (Exception Node.js). Для доступа к данным необходим средний уровень, например API RESTful.

0

Как правило, требуется на стороне сервера язык сценариев, как PHP для подключения к MySQL, однако, если вы просто делаете быстрый макет, то вы можете использовать http://www.mysqljs.com для подключения к MySQL с помощью Javascript кода следующим образом:

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

Следует отметить, что это не безопасный способ доступа к MySql и подходит только для частных демонстраций или сценариев, в которых исходный код не может быть доступен конечным пользователям, например, в приложениях Phonegap iOS.

4

Да. Для MySQL есть HTTP-плагин.

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

Я просто прибегая к помощи об этом сейчас, что привело меня к этому StackOverflow вопрос. Вы должны иметь возможность AJAX базы данных MySQL сейчас или в ближайшем будущем (они утверждают, что она не готова к производству).

0

Да, вы можете. Соединители MySQL используют TCP для подключения, а в JS существует небольшая измененная версия TCP-клиента под названием Websocket. Но вы не можете напрямую подключиться к серверу MySQL с помощью websocket. Вам понадобится сторонний мост между websocket и mysql. Он получает запрос от websocket, отправляет его в mysql, результат ответа и повторно отправляется в JS.

И это мой пример мост написан на C# с WebSocket-диез библиотеки:

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"); 
Смежные вопросы