JavaScript có thể kết nối với MySQL không? Nếu vậy, làm thế nào?
JavaScript có thể kết nối với MySQL không? Nếu vậy, làm thế nào?
Câu trả lời:
Không, JavaScript không thể kết nối trực tiếp với MySQL. Nhưng bạn có thể kết hợp JS với PHP để làm như vậy.
JavaScript là ngôn ngữ phía máy khách và cơ sở dữ liệu MySQL của bạn sẽ chạy trên máy chủ
JavaScript phía máy khách không thể truy cập MySQL mà không có một số loại cầu nối. Nhưng các tuyên bố in đậm ở trên rằng JavaScript chỉ là ngôn ngữ phía máy khách là không chính xác - JavaScript có thể chạy phía máy khách và phía máy chủ, như với Node.js.
Node.js có thể truy cập MySQL thông qua một cái gì đó như https://github.com/sidorares/node-mysql2
Bạn cũng có thể phát triển thứ gì đó bằng Socket.IO
Ý của bạn là hỏi liệu một ứng dụng JS phía máy khách có thể truy cập MySQL không? Tôi không chắc liệu những thư viện như vậy có tồn tại hay không, nhưng chúng có thể.
CHỈNH SỬA : Kể từ khi viết, bây giờ chúng ta đã có MySQL Cluster :
Trình điều khiển JavaScript cụm MySQL cho Node.js nghe giống như nó - nó là một trình kết nối có thể được gọi trực tiếp từ mã JavaScript của bạn để đọc và ghi dữ liệu của bạn. Vì nó truy cập trực tiếp vào các nút dữ liệu, không có thêm độ trễ khi chuyển qua Máy chủ MySQL và cần phải chuyển đổi từ mã // đối tượng JavaScript thành các hoạt động SQL. Nếu vì lý do nào đó, bạn muốn nó chuyển qua Máy chủ MySQL (ví dụ: nếu bạn đang lưu trữ các bảng trong InnoDB) thì bạn có thể cấu hình nó.
JSDB cung cấp giao diện JS cho các DB.
Một tập hợp các gói DB được quản lý cho Node.js từ sindresorhus.
Nếu bạn muốn kết nối với cơ sở dữ liệu MySQL bằng JavaScript, bạn có thể sử dụng Node.js và một thư viện có tên là mysql . Bạn có thể tạo truy vấn và nhận kết quả dưới dạng một mảng các thanh ghi. Nếu bạn muốn thử, bạn có thể sử dụng trình tạo dự án của tôi để tạo chương trình phụ trợ và chọn MySQL làm cơ sở dữ liệu để kết nối. Sau đó, chỉ cần hiển thị điểm cuối REST API hoặc GraphQL mới của bạn và bắt đầu làm việc với cơ sở dữ liệu MySQL của bạn.
CÂU TRẢ LỜI CŨ TRÁI BẰNG NOSTALGIA
SAU ĐÓ
Khi tôi hiểu câu hỏi và sửa cho tôi nếu tôi sai, nó đề cập đến mô hình máy chủ cổ điển chỉ với JavaScript ở phía máy khách. Trong mô hình cổ điển này, với ĐÈN máy chủ (Linux, Apache, MySQL, PHP) ngôn ngữ trong tiếp xúc với cơ sở dữ liệu là PHP, như vậy để yêu cầu dữ liệu vào cơ sở dữ liệu bạn cần phải viết PHP kịch bản và tiếng vang dữ liệu trở lại cho khách hàng. Về cơ bản, sự phân bố của các ngôn ngữ theo máy vật lý là:
Điều này trả lời cho một mô hình MVC (Model, View, Controller) trong đó chúng tôi có chức năng sau:
Đối với bộ điều khiển, chúng tôi có các công cụ thực sự thú vị như jQuery , như thư viện "cấp thấp" để kiểm soát cấu trúc HTML (DOM) và sau đó là các công cụ mới, cấp cao hơn như Knockout.js cho phép chúng tôi tạo các trình quan sát kết nối các Các phần tử DOM cập nhật chúng khi sự kiện xảy ra. Ngoài ra còn có Angular.js của Google hoạt động theo cách tương tự, nhưng dường như là một môi trường hoàn chỉnh. Để giúp bạn lựa chọn trong số chúng, ở đây bạn có hai phân tích tuyệt vời về hai công cụ: Knockout so với Angular.js và Knockout.js so với Angular.js . Tôi vẫn đang đọc. Hy vọng họ sẽ giúp bạn.
HIỆN NAY
Trong các máy chủ hiện đại dựa trên Node.js, chúng tôi sử dụng JavaScript cho mọi thứ. Node.js là một môi trường JavaScript với nhiều thư viện hoạt động với Google V8, Chrome JavaScript engine. Cách chúng tôi làm việc với các máy chủ mới này là:
Sau đó, chúng tôi có rất nhiều gói mà chúng tôi có thể cài đặt bằng cách sử dụng NPM (trình quản lý gói Node.js) và sử dụng chúng trực tiếp trong máy chủ Node.js của chúng tôi chỉ cần yêu cầu nó (đối với những bạn muốn học Node.js, hãy thử hướng dẫn dành cho người mới bắt đầu này để có cái nhìn tổng quan). Và trong số các gói này, bạn có một số gói để truy cập cơ sở dữ liệu. Bằng cách sử dụng này, bạn có thể sử dụng JavaScript ở phía máy chủ để truy cập cơ sở dữ liệu SQL của tôi.
Nhưng tốt nhất bạn có thể làm nếu định làm việc với Node.js là sử dụng cơ sở dữ liệu NoSQL mới như MongoDB , dựa trên các tệp JSON. Thay vì lưu trữ các bảng như MySQL, nó lưu trữ dữ liệu trong các cấu trúc JSON, vì vậy bạn có thể đặt các dữ liệu khác nhau bên trong mỗi cấu trúc như các vectơ số dài thay vì tạo các bảng lớn với kích thước lớn nhất.
Tôi hy vọng lời giải thích ngắn gọn này sẽ hữu ích cho bạn và nếu bạn muốn tìm hiểu thêm về điều này, tại đây, bạn có một số tài nguyên mà bạn có thể sử dụng:
Tôi hy vọng nó sẽ giúp bạn bắt đầu.
Chúc vui vẻ!
Hơi muộn nhưng gần đây tôi đã phát hiện ra rằng MySql 5.7 có plugin http thông qua việc người dùng có thể kết nối trực tiếp với mysql ngay bây giờ.
Tìm Http Client cho mysql 5.7
Câu trả lời đơn giản là: không.
JavaScript là một ngôn ngữ phía máy khách chạy trong trình duyệt ( mặc dù node.js ) và MySQL là một công nghệ phía máy chủ chạy trên máy chủ.
Điều đó có nghĩa là bạn thường sử dụng ngôn ngữ phía máy chủ như ASP.NET hoặc PHP để kết nối với cơ sở dữ liệu.
ĐÚNG? Có một cái nhìn một sao băng. Liên kết:
http://meteor.com/screencast và http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/
Tôi không hiểu nó được thực hiện như thế nào. Nhưng Nettuts + đưa thứ này vào phần javascript-ajax, có thể điều kỳ diệu sẽ xảy ra.
Nó cũng chỉ ra một số cách để kết nối và chèn vào MongoDB bằng JS, như sau:
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});
Tùy thuộc vào môi trường của bạn, bạn có thể sử dụng Rhino để thực hiện việc này, hãy xem trang web Rhino . Điều này cho phép bạn truy cập vào tất cả các thư viện Java từ bên trong JavaScript.
Đúng. Có một plugin HTTP cho MySQL.
http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/
Tôi chỉ đang tìm kiếm thông tin về nó, điều này đã dẫn tôi đến câu hỏi về stackoverflow này. Bạn sẽ có thể AJAX cơ sở dữ liệu MySQL ngay bây giờ hoặc trong tương lai gần (họ cho rằng nó chưa sẵn sàng để sản xuất).
Thông thường, bạn cần một ngôn ngữ kịch bản phía máy chủ như PHP để kết nối với MySQL, tuy nhiên, nếu bạn chỉ thực hiện một mô hình nhanh, thì bạn có thể sử dụng http://www.mysqljs.com để kết nối với MySQL từ Javascript bằng cách sử dụng mã như sau:
MySql.Execute(
"mysql.yourhost.com",
"username",
"password",
"database",
"select * from Users",
function (data) {
console.log(data)
});
Cần phải đề cập rằng đây không phải là cách an toàn để truy cập MySql và chỉ phù hợp với các bản demo riêng tư hoặc các trường hợp mà người dùng cuối không thể truy cập mã nguồn, chẳng hạn như trong ứng dụng Phonegap iOS.
var strSrc = "http://mysqljs.com/sql.aspx?";
Có bạn có thể. Các trình kết nối MySQL sử dụng TCP để kết nối và trong JS có một phiên bản sửa đổi nhỏ của ứng dụng khách TCP được gọi là Websocket. Nhưng bạn không thể kết nối trực tiếp với máy chủ MySQL bằng websocket. Bạn sẽ cần một số cầu nối của bên thứ 3 giữa websocket và mysql. Nó nhận truy vấn từ websocket, gửi đến mysql, kết quả phản hồi và gửi lại tới JS.
Và đây là cầu nối ví dụ của tôi được viết bằng C # với thư viện 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 bên:
var ws = new WebSocket("ws://localhost/");
ws.send("server=localhost;user=root;database=mydb;");
ws.send("select * from users");
Không.
Bạn cần viết một trình bao bọc bằng PHP, rồi xuất dữ liệu trả về (có thể là Json). ĐỪNG BAO GIỜ, lấy từ mã SQL "_GET" của bạn, vì đây được gọi là SQL injection (những người học được điều này sẽ có toàn quyền kiểm soát cơ sở dữ liệu của bạn).
Đây là một ví dụ tôi đã viết:
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;
}
Vui lòng tìm hiểu về SQL injection.
Bạn có thể kết nối với MySQL từ Javascript thông qua một applet JAVA. Ứng dụng JAVA sẽ nhúng trình điều khiển JDBC cho MySQL để cho phép bạn kết nối với MySQL.
Hãy nhớ rằng nếu bạn muốn kết nối với máy chủ MySQL từ xa (không phải máy chủ mà bạn đã tải xuống applet từ đó), bạn sẽ cần yêu cầu người dùng cấp quyền mở rộng cho applet. Theo mặc định, applet chỉ có thể kết nối với máy chủ mà chúng được tải xuống.
JavaScript không thể kết nối trực tiếp với DB để nhận dữ liệu cần thiết nhưng bạn có thể sử dụng AJAX. Để thực hiện yêu cầu AJAX dễ dàng tới máy chủ, bạn có thể sử dụng khung jQuery JS http://jquery.com . Đây là một ví dụ nhỏ
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();
// 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);
Tôi hiểu câu hỏi của bạn Tôi nghĩ bạn đang nhầm lẫn nó với các ngôn ngữ như dot.net và java, nơi bạn có thể mở kết nối DB trong mã của mình. Không, JavaScript không thể kết nối trực tiếp với MySQL vì JavaScript là ngôn ngữ kịch bản phía máy khách (Exception Node.js). Bạn cần một lớp giữa như RESTful API để truy cập dữ liệu.
Bạn có thể thêm kết nối mysql bằng tệp PHP. Dưới đây là ví dụ về tệp 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);
?> }
Can JavaScript connect with MySQL?
.