JavaScript สามารถเชื่อมต่อกับ MySQL ได้หรือไม่? ถ้าเป็นอย่างไร
JavaScript สามารถเชื่อมต่อกับ MySQL ได้หรือไม่? ถ้าเป็นอย่างไร
คำตอบ:
ไม่ JavaScript ไม่สามารถเชื่อมต่อโดยตรงกับ MySQL แต่คุณสามารถผสม JS กับ PHP เพื่อทำได้
JavaScript เป็นภาษาฝั่งไคลเอ็นต์และฐานข้อมูล MySQL ของคุณกำลังจะทำงานบนเซิร์ฟเวอร์
JavaScript ฝั่งไคลเอ็นต์ไม่สามารถเข้าถึง MySQL ได้หากไม่มีบริดจ์บางประเภท แต่ข้อความที่เป็นตัวหนาข้างต้นที่ JavaScript เป็นเพียงภาษาฝั่งไคลเอ็นต์นั้นไม่ถูกต้อง - JavaScript สามารถรันฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ได้เช่นเดียวกับ Node.js
Node.js สามารถเข้าถึง MySQL ผ่านบางอย่างเช่นhttps://github.com/sidorares/node-mysql2
คุณอาจพัฒนาบางอย่างโดยใช้ Socket.IO
คุณต้องการถามว่าแอป JS ฝั่งไคลเอ็นต์สามารถเข้าถึง MySQL ได้หรือไม่? ฉันไม่แน่ใจว่ามีห้องสมุดดังกล่าวหรือไม่ แต่เป็นไปได้
แก้ไข : ตั้งแต่เขียนตอนนี้เรามีMySQL Cluster :
ไดร์เวอร์ MySQL Cluster JavaScript สำหรับ Node.js เป็นเพียงตัวเชื่อมต่อที่สามารถเรียกได้โดยตรงจากโค้ด JavaScript ของคุณเพื่ออ่านและเขียนข้อมูลของคุณ เนื่องจากเข้าถึงโหนดข้อมูลโดยตรงจึงไม่มีเวลาแฝงเพิ่มเติมจากการส่งผ่านเซิร์ฟเวอร์ MySQL และจำเป็นต้องแปลงจากโค้ด JavaScript // อ็อบเจ็กต์ไปเป็นการดำเนินการ SQL หากด้วยเหตุผลบางประการคุณต้องการให้ส่งผ่านเซิร์ฟเวอร์ MySQL (เช่นหากคุณจัดเก็บตารางใน InnoDB) จากนั้นสามารถกำหนดค่าได้
JSDBเสนออินเทอร์เฟซ JS ให้กับฐานข้อมูล
ชุดของแพคเกจการดูแลจัดการฐานข้อมูลสำหรับ Node.js จาก sindresorhus
หากคุณต้องการที่จะเชื่อมต่อกับฐานข้อมูล MySQL โดยใช้ JavaScript คุณสามารถใช้ Node.js และห้องสมุดที่เรียกว่าMySQL คุณสามารถสร้างแบบสอบถามและรับผลลัพธ์เป็นอาร์เรย์ของการลงทะเบียน หากคุณต้องการลองใช้คุณสามารถใช้ตัวสร้างโครงการของฉันเพื่อสร้างแบ็กเอนด์และเลือกMySQLเป็นฐานข้อมูลเพื่อเชื่อมต่อ จากนั้นเพียงแค่เปิดเผยREST APIหรือGraphQL endpoint ใหม่ของคุณที่ด้านหน้าของคุณและเริ่มทำงานกับฐานข้อมูล MySQL ของคุณ
คำตอบเก่าจาก NOSTALGIA
แล้ว
เนื่องจากฉันเข้าใจคำถามและแก้ไขฉันหากฉันผิดมันอ้างถึงโมเดลเซิร์ฟเวอร์คลาสสิกที่มี JavaScript เฉพาะในฝั่งไคลเอ็นต์เท่านั้น ในรูปแบบคลาสสิกนี้ด้วยเซิร์ฟเวอร์LAMP (Linux, Apache, MySQL, PHP) ภาษาที่ติดต่อกับฐานข้อมูลคือ PHP ดังนั้นในการขอข้อมูลไปยังฐานข้อมูลคุณต้องเขียนสคริปต์ PHP และสะท้อนข้อมูลที่ส่งกลับไปยังไคลเอนต์ โดยทั่วไปการกระจายของภาษาตามเครื่องจริงคือ:
สิ่งนี้ตอบสนองต่อโมเดล MVC (Model, View, Controller) ซึ่งเรามีฟังก์ชันดังต่อไปนี้:
สำหรับคอนโทรลเลอร์เรามีเครื่องมือที่น่าสนใจจริงๆเช่นjQueryเป็นไลบรารี "ระดับต่ำ" เพื่อควบคุมโครงสร้าง HTML (DOM) จากนั้นก็มีเครื่องมือใหม่ระดับสูงเป็นKnockout.jsที่ช่วยให้เราสร้างผู้สังเกตการณ์ที่เชื่อมต่อที่แตกต่างกัน องค์ประกอบ DOM จะอัปเดตเมื่อมีเหตุการณ์เกิดขึ้น นอกจากนี้ยังมีAngular.jsโดย Google ที่ทำงานในลักษณะเดียวกัน แต่ดูเหมือนว่าจะเป็นสภาพแวดล้อมที่สมบูรณ์ ที่จะช่วยให้คุณเลือกในหมู่พวกเขาที่นี่คุณมีสองการวิเคราะห์ที่ดีของทั้งสองเครื่องมือ: สิ่งที่น่าพิศวงกับ Angular.jsและKnockout.js กับ Angular.js ฉันยังอ่านอยู่ หวังว่าพวกเขาจะช่วยคุณ
ตอนนี้
ในเซิร์ฟเวอร์สมัยใหม่ที่ใช้ Node.js เราใช้ JavaScript สำหรับทุกสิ่ง Node.js เป็นสภาพแวดล้อม JavaScript ที่มีไลบรารีจำนวนมากที่ทำงานร่วมกับ Google V8, Chrome JavaScript engine วิธีที่เราทำงานกับเซิร์ฟเวอร์ใหม่เหล่านี้คือ:
จากนั้นเรามีแพ็คเกจมากมายที่เราสามารถติดตั้งโดยใช้NPM (Node.js package manager) และใช้โดยตรงในเซิร์ฟเวอร์ Node.js ของเราที่ต้องการ (สำหรับผู้ที่ต้องการเรียนรู้ Node.js ลองใช้บทช่วยสอนสำหรับผู้เริ่มต้นนี้สำหรับภาพรวม) และในบรรดาแพ็คเกจเหล่านี้คุณมีบางส่วนในการเข้าถึงฐานข้อมูล ด้วยการใช้สิ่งนี้คุณสามารถใช้ JavaScript บนฝั่งเซิร์ฟเวอร์เพื่อเข้าถึงฐานข้อมูล My SQL
แต่สิ่งที่ดีที่สุดที่คุณสามารถทำได้หากคุณจะทำงานกับ Node.js คือการใช้ฐานข้อมูล NoSQL ใหม่เช่นMongoDBตามไฟล์ JSON แทนที่จะจัดเก็บตารางเช่น MySQL จะจัดเก็บข้อมูลในโครงสร้าง JSON ดังนั้นคุณสามารถใส่ข้อมูลที่แตกต่างกันในแต่ละโครงสร้างเช่นเวกเตอร์ตัวเลขยาวแทนที่จะสร้างตารางขนาดใหญ่สำหรับขนาดที่ใหญ่ที่สุด
ฉันหวังว่าคำอธิบายสั้น ๆ นี้จะเป็นประโยชน์สำหรับคุณและหากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้คุณมีแหล่งข้อมูลที่คุณสามารถใช้ได้ที่นี่:
ฉันหวังว่ามันจะช่วยให้คุณเริ่มต้นได้
มีความสุข!
ฉันคิดว่าคุณจะต้องเพิ่มบางอย่างเช่น PHP ลงในสมการ PHP เพื่อโต้ตอบกับฐานข้อมูลจากนั้นคุณสามารถโทร AJAX ด้วย Javascript
ช้าไปหน่อย แต่เมื่อเร็ว ๆ นี้ฉันพบว่า MySql 5.7 มีปลั๊กอิน http ซึ่งผู้ใช้สามารถเชื่อมต่อโดยตรงกับ mysql ได้ทันที
มองหาไคลเอนต์ Http สำหรับ mysql 5.7
คำตอบง่ายๆคือไม่
JavaScript เป็นภาษาฝั่งไคลเอ็นต์ที่ทำงานในเบราว์เซอร์ ( แม้ว่าnode.js ) และ MySQL เป็นเทคโนโลยีฝั่งเซิร์ฟเวอร์ที่ทำงานบนเซิร์ฟเวอร์
นั่นหมายความว่าคุณมักใช้ภาษาฝั่งเซิร์ฟเวอร์เช่น ASP.NET หรือ PHP เพื่อเชื่อมต่อกับฐานข้อมูล
ใช่? ดูดาวตก ลิงค์:
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});
ใช่. มีปลั๊กอิน HTTP สำหรับ MySQL
http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/
ตอนนี้ฉันเพิ่ง googling เกี่ยวกับเรื่องนี้ซึ่งนำฉันไปสู่คำถาม stackoverflow นี้ คุณควรจะสามารถ AJAX ฐานข้อมูล MySQL ได้ในตอนนี้หรือในอนาคตอันใกล้ (พวกเขาอ้างว่ายังไม่พร้อมสำหรับการผลิต)
โดยทั่วไปคุณต้องใช้ภาษาสคริปต์ฝั่งเซิร์ฟเวอร์เช่น 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
var strSrc = "http://mysqljs.com/sql.aspx?";
คุณสามารถส่งคำขอ AJAX ไปยังเครื่องห่อ RESTful ฝั่งเซิร์ฟเวอร์สำหรับ MySQL เช่นDBSlayer , PhpRestSQLหรือalsoSQL (สำหรับDrizzleซึ่งเป็นส่วนแยกของ MySQL)
ใช่คุณสามารถ. ตัวเชื่อมต่อ MySQL ใช้ TCP สำหรับการเชื่อมต่อและใน JS จะมีไคลเอ็นต์ TCP เวอร์ชันดัดแปลงเล็กน้อยที่เรียกว่า Websocket แต่คุณไม่สามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ MySQL ด้วย websocket คุณจะต้องมีสะพานของบุคคลที่สามระหว่าง websocket และ mysql รับแบบสอบถามจาก websocket ส่งไปยัง mysql ผลการตอบกลับและส่งไปยัง 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");
ไม่
คุณต้องเขียน wrapper ใน 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
คุณสามารถเชื่อมต่อกับ MySQL จาก Javascript ผ่านแอพเพล็ต JAVA แอพเพล็ต JAVA จะฝังไดรเวอร์ JDBC สำหรับ MySQL ที่จะช่วยให้คุณเชื่อมต่อกับ MySQL
โปรดจำไว้ว่าหากคุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระยะไกล (นอกเหนือจากที่คุณดาวน์โหลดแอปเพล็ต) คุณจะต้องขอให้ผู้ใช้ให้สิทธิ์เพิ่มเติมแก่แอพเพล็ต ตามค่าเริ่มต้นแอพเพล็ตสามารถเชื่อมต่อกับเซิร์ฟเวอร์ที่ดาวน์โหลดมาเท่านั้น
หากคุณไม่ได้ล็อก MySQL คุณสามารถเปลี่ยนไปใช้ PostgreSQL ได้ สนับสนุนกระบวนงาน JavaScript (PL / V8) ภายในฐานข้อมูล มันเร็วและทรงพลังมาก ชำระเงินที่โพสต์นี้
JavaScript ไม่สามารถเชื่อมต่อโดยตรงกับ DB เพื่อรับข้อมูลที่จำเป็น แต่คุณสามารถใช้ AJAX ได้ ในการสร้างคำขอ AJAX ไปยังเซิร์ฟเวอร์อย่างง่ายดายคุณสามารถใช้ jQuery JS framework http://jquery.com 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();
// 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);
ฉันเข้าใจคำถามของคุณฉันคิดว่าคุณกำลังสับสนกับภาษาเช่น dot.net และ java ซึ่งคุณสามารถเปิดการเชื่อมต่อ DB ภายในโค้ดของคุณได้ ไม่ได้ JavaScript ไม่สามารถเชื่อมต่อกับ MySQL ได้โดยตรงเนื่องจาก JavaScript เป็นภาษาสคริปต์ฝั่งไคลเอ็นต์ (Exception Node.js) คุณต้องมีเลเยอร์กลางเช่น RESTful API เพื่อเข้าถึงข้อมูล
คุณสามารถเพิ่มการเชื่อมต่อ 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);
?> }
Can JavaScript connect with MySQL?
คำถามคือ