Can JavaScript connect with MySQL?

JavaScript 可以与 MySQL 连接吗? 如果可以,如何连接?

379471 次浏览

不,JavaScript 不能直接连接到 MySQL,但是你可以将 JS 和 PHP 混合起来。

JavaScript 是一种客户端语言,您的 MySQL 数据库将在服务器上运行

我认为您需要在这个等式中加入 PHP 之类的东西。PHP 与数据库交互,然后您可以使用 Javascript 进行 AJAX 调用。

答案很简单: 不。

JavaScript 是在浏览器中运行的客户端语言(尽管有 node.js) ,而 MySQL 是在服务器上运行的服务器端技术。

这意味着您通常使用 ASP.NET 或 PHP 等服务器端语言来连接数据库。

没有。

您需要用 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 注入。

JavaScript 不能直接连接到 DB 来获取所需的数据,但是你可以使用 AJAX。为了方便地向服务器发送 AJAX 请求,可以使用 jQueryJS 框架 http://jquery.com。这里有一个小例子

约翰逊:

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();


// mysql connection and select query
$conn = new mysqli($servername, $username, $password, $dbname);




try {
die("Connection failed: " . $conn->connect_error);


$sql = "SELECT * FROM [table_name] WHERE condition = [conditions]";
$result = $conn->query($sql);


if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$out[] = [
'field1' => $row["field1"],
'field2' => $row["field2"]
];
}
} else {
echo "0 results";
}


} catch(Exception $e) {
echo "Error: " . $e->getMessage();
}
echo json_encode($out);

You can connect to MySQL from Javascript through a JAVA applet. The JAVA applet would embed the JDBC driver for MySQL that will allow you to connect to MySQL.

请记住,如果您想连接到远程 MySQL 服务器(除了您从中下载 applet 的服务器之外) ,您需要请求用户授予 applet 扩展权限。默认情况下,applet 只能连接到下载它们的服务器。

根据您的环境,您可以使用 Rhino 来完成这项工作,请参阅 Rhino website。这使您可以从 JavaScript 内部访问所有 Java 库。

您可以将 AJAX 请求发送到 MySQL 的某些服务器端 RESTful 包装器,例如 猎杀者PhpRestSQLAlsoSQL(对于 MySQL 的分支 毛毛雨)。

是吗? 看看流星吧。链接:

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

客户端 JavaScript 不能在没有某种桥接的情况下访问 MySQL。但是上面的粗体语句说 JavaScript 只是一种客户端语言是不正确的—— JavaScript 可以运行客户端和服务器端,就像 Node.js 一样。

Js 可以通过类似 https://github.com/sidorares/node-mysql2的东西访问 MySQL

您还可以使用 Socket.IO 开发一些东西

您是想问客户端 JS 应用程序是否可以访问 MySQL?我不确定这样的图书馆是否存在,但它们是可能的。

编辑 : 自从写作以来,我们现在有了 MySQL 集群:

MySQL Cluster JavaScript Driver for Node.js 就是它听起来的那样——它是一个连接器,可以从您的 JavaScript 代码直接调用它来读写您的数据。因为它直接访问数据节点,所以通过 MySQL Server 不会有额外的延迟,并且需要从 JavaScript 代码//对象转换为 SQL 操作。如果出于某种原因,您希望它通过 MySQLServer (例如,如果您在 InnoDB 中存储表) ,那么可以对其进行配置。

如果你没有锁定 MySQL,你可以切换到 PostgreSQL。它支持数据库内部的 JavaScript 过程(PL/V8)。它速度很快,威力很大。看看这个 邮寄

如果您想使用 JavaScript 连接到 MySQL 数据库,可以使用 Node.js 和一个名为 一个 href = “ https://github.com/mysqljs/mysql”rel = “ nofollow norefrer”> mysql 的库。您可以创建查询,并以寄存器数组的形式获得结果。如果你想尝试它,你可以使用我的 < a href = “ https://www.npmjs.com/package/fullstack-cli”rel = “ nofollow norefrer”> project Generator 创建一个后端,并选择 MySQL作为数据库连接。然后,将新的 REST APIGraphQL端点暴露在前面,并开始使用 MySQL 数据库。


OLD ANSWER LEFT BY NOSTALGIA

那么

正如我理解这个问题,并纠正我,如果我错了,它指的是经典的服务器模型与 JavaScript 只在客户端。在这个经典模型中,使用 台灯服务器(Linux、 Apache、 MySQL、 PHP)时,与数据库接触的语言是 PHP,因此要向数据库请求数据,需要编写 PHP 脚本并将返回的数据返回给客户机。基本上,按照物理机器分布的语言是:

  1. 服务器端: PHP 和 MySQL。
  2. 客户端: HTML/CSS 和 JavaScript。

这回应了 MVC 模型(模型、视图、控制器) ,其中我们有以下功能:

  1. 模型: 这个模型是处理数据的,在本例中是管理变量或访问存储数据的 PHP 脚本,在本例中是 MySQL 数据库,并将其作为 JSON 数据发送给客户机。
  2. 视图: 视图就是我们所看到的,它应该完全独立于模型。它只需要显示模型中包含的数据,但不应该包含相关的数据。在这种情况下,视图使用 HTML 和 CSS。HTML 来创建视图的基本结构,CSS 来给这个基本结构赋形。
  3. 控制器是我们的模型和视图之间的接口。在本例中,使用的语言是 JavaScript,它将模型发送给我们的数据作为一个 JSON 包,并将其放入提供 HTML 结构的容器中。控制器与模型交互的方式是使用 AJAX。我们使用 走开职位方法在服务器端调用 PHP 脚本并捕获从服务器返回的数据。

对于控制器,我们有非常有趣的工具,比如 JQuery,作为控制 HTML 结构(DOM)的“低级”库,然后是新的、更高级的工具,比如 Knockout.js,它允许我们创建观察器,连接不同的 DOM 元素,在事件发生时更新它们。谷歌也有类似的 Angular.js工作方式,但似乎是一个完整的环境。为了帮助您从中进行选择,这里有两个关于这两个工具的出色分析: Knockout vs. Angular.jsKnockout.js 对 Angular.js。我还在看书。希望他们能帮到你。

现在

在基于 Node.js 的现代服务器中,我们使用 JavaScript 做任何事情。Js 是一个 JavaScript 环境,其中包含许多使用 Google V8、 Chrome JavaScript 引擎的库。我们使用这些新服务器的方法是:

  1. Js 特快: 构建服务器的大型机。我们可以用几行代码创建一个服务器,甚至可以使用 Express 之类的库来使创建服务器更加容易。使用 Node.js 和 Express,我们将管理客户机向服务器发送的请求,并使用适当的页面来回答它们。
  2. 为了创建页面,我们使用了一种模板语言,在本例中就是 Jade,它允许我们像编写 HTML 一样编写网页,但是有所不同(这需要一点时间,但是很容易学习)。然后,在服务器的代码中回应客户的请求,我们只需要将 Jade 代码渲染成一个“真正的”HTML 代码。
  3. 触控笔 : 与 Jade 类似,但用于 CSS。在本例中,我们使用一个中间件函数将触笔文件转换为页面的一个真正的 CSS 文件。

然后,我们有很多软件包可以使用 翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳(Node.js 软件包管理器)安装,并直接在我们的 Node.js 服务器上使用它们(对于那些想要学习 Node.js 的人来说,可以尝试使用这个 初学者教程来获得一个概述)。在这些包中,有一些可以访问数据库。使用它,您可以在服务器端使用 JavaScript 访问 MySQL 数据库。

但是,如果要使用 Node.js,最好的方法是使用新的 NoSQL 数据库,如基于 JSON 文件的 网址: http://www.MongoDB.org/rel = “ nofollow noReferrer”> MongoDB 。它不存储像 MySQL 这样的表,而是以 JSON 结构存储数据,因此您可以在每个结构中放入不同的数据,比如长数值向量,而不必为最大的结构创建大型表。

我希望这个简短的解释对你有用,如果你想了解更多,这里有一些你可以使用的资源:

  • Egghead : 这个网站有很多关于 JavaScript 及其环境的简短教程。值得一试。还有时不时的折扣。
  • Code School : 有一个关于 Chrome 开发工具的免费且非常有趣的课程来帮助你测试客户端。
  • Codecademy : 提供关于 HTML、 CSS、 JavaScript、 jQuery 和 PHP 的免费课程,你可以通过在线示例学习。
  • 10gen Education : 在不同语言的教程中,你需要了解 MongoDB 的一切。
  • W3Schools : 这里有关于所有这些的教程,你可以把它作为参考,因为它有很多非常有用的短代码示例。
  • Udacity : 一个提供关于不同主题的免费视频课程,以及一些关于 web 开发的有趣课程的地方,我更喜欢这个地方,这是一个用 JavaScript 编写的令人惊叹的3D 图形 WebGL 课程。

我希望这能帮助你开始。

玩得开心!

Bit late but recently I have found out that MySql 5.7 got http plugin throuh which user can directly connect to mysql now.

查找 mysql 5.7的 Http Client

是的,有一个针对 MySQL 的 HTTP 插件。

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

我刚刚在谷歌上搜索了一下,这让我想到了这个堆栈溢出的问题。您应该能够 AJAX 一个 MySQL 数据库现在或在不久的将来(他们声称它还没有准备好生产)。

Yes you can. MySQL connectors use TCP for connection, and in JS there is an little modified version of TCP client called Websocket. But you can't directly connect to MySQL server with websocket. You will need some 3rd party bridge between websocket and mysql. It receive query from websocket, send it to mysql, response result and resend to JS.

这是我用 C # 编写的带有 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 方面:

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


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


ws.send("select * from users");

Of course you can. In Nodejs you can connect server side JavaScript with MySQL using MySQL driver. Nodejs-MySQL