JavaScript สามารถเชื่อมต่อกับ MySQL ได้หรือไม่?


113

JavaScript สามารถเชื่อมต่อกับ MySQL ได้หรือไม่? ถ้าเป็นอย่างไร


ไม่เว้นแต่คุณจะไม่ได้พูดถึง JavaScript ในเบราว์เซอร์
Luca Matteis

2
แล้ว JavaScript ฝั่งเซิร์ฟเวอร์ (เช่นผ่าน Rhino) ล่ะ? เราเชื่อมต่อกับฐานข้อมูลได้ไหม
Joand

7
หรือ Node.js ก็ใช้ได้เช่นกัน
Gabriel Fair

1
ไม่สนใจคำตอบทั้งหมดในหน้านี้เพราะผิดทั้งหมด ในความเป็นจริงมันสามารถทำได้ ดูdeveloper.chrome.com/apps/app_network
Pacerier

คำตอบที่ยอมรับนั้นผิดธรรมดา (และเป็นในปี 2010 ด้วย) คำตอบนี้ถูกต้อง
TJ Crowder

คำตอบ:


26

ไม่ JavaScript ไม่สามารถเชื่อมต่อโดยตรงกับ MySQL แต่คุณสามารถผสม JS กับ PHP เพื่อทำได้

JavaScript เป็นภาษาฝั่งไคลเอ็นต์และฐานข้อมูล MySQL ของคุณกำลังจะทำงานบนเซิร์ฟเวอร์


87
หมายเหตุเล็ก ๆ : ข้อเท็จจริงที่ว่า JavaScript ทำงานบนฝั่งไคลเอ็นต์ไม่มีอะไรเกี่ยวข้องกับการที่ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูลได้ อาจเป็นเรื่องดีมาก (แม้ว่าจะไม่น่าเป็นไปได้สูง) ที่ภาษาในอนาคตจะเพิ่ม API เพื่อเข้าถึงฐานข้อมูลระยะไกล
Lucas Pottersky

3
ฉันจะไม่เรียกสิ่งนั้นว่า "ผสม JS กับ PHP" สิ่งที่คุณอาจทำได้คือให้ PHP Code สร้าง JavaScript Code / Data (json เช่น) ที่ดึงมาจาก MySQL ล่วงหน้า หรือคุณอาจใช้ PHP บนเซิร์ฟเวอร์เพื่อจัดเตรียมอินเตอร์เฟส http (json / REST / SOAP / ... อะไรก็ได้) เพื่อเข้าถึงข้อมูลที่โค้ด php ดึงมาจาก MySQL - และอินเทอร์เฟซ http นี้สามารถเรียกใช้โดยโค้ด JavaScript ที่ทำงานได้ทุกที่ส่วนใหญ่ brwoser ณ วันนี้ยังบอกด้วยว่า JavaScript เป็นฝั่งไคลเอ็นต์ไม่เป็นปัจจุบันอีกต่อไป - ตรวจสอบ Node.js เป็นต้น
Henning

14
"JavaScript เป็นภาษาฝั่งไคลเอ็นต์" ไม่จำเป็น: ไม่มากไปกว่า Java
LeeGee

2
ด้วยเวอร์ชันใหม่ของ mysql 5.7 httpclient สามารถสื่อสารโดยตรงกับฐานข้อมูล mysql โดยใช้ปลั๊กอิน http (สร้างขึ้นสำหรับ mysql 5.7)
Atul Chaudhary

มันจะเป็นความเสี่ยงด้านความปลอดภัยสำหรับเบราว์เซอร์ทั้งหมดที่เข้าถึงไซต์ของคุณที่จะมีไฟล์จาวาสคริปต์ในเครื่องที่เข้าถึงเซิร์ฟเวอร์ MySQL ของคุณโดยตรงหรือไม่?
Vassilis

86

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) จากนั้นสามารถกำหนดค่าได้


53

หากคุณต้องการที่จะเชื่อมต่อกับฐานข้อมูล MySQL โดยใช้ JavaScript คุณสามารถใช้ Node.js และห้องสมุดที่เรียกว่าMySQL คุณสามารถสร้างแบบสอบถามและรับผลลัพธ์เป็นอาร์เรย์ของการลงทะเบียน หากคุณต้องการลองใช้คุณสามารถใช้ตัวสร้างโครงการของฉันเพื่อสร้างแบ็กเอนด์และเลือกMySQLเป็นฐานข้อมูลเพื่อเชื่อมต่อ จากนั้นเพียงแค่เปิดเผยREST APIหรือGraphQL endpoint ใหม่ของคุณที่ด้านหน้าของคุณและเริ่มทำงานกับฐานข้อมูล MySQL ของคุณ


คำตอบเก่าจาก NOSTALGIA

แล้ว

เนื่องจากฉันเข้าใจคำถามและแก้ไขฉันหากฉันผิดมันอ้างถึงโมเดลเซิร์ฟเวอร์คลาสสิกที่มี JavaScript เฉพาะในฝั่งไคลเอ็นต์เท่านั้น ในรูปแบบคลาสสิกนี้ด้วยเซิร์ฟเวอร์LAMP (Linux, Apache, MySQL, PHP) ภาษาที่ติดต่อกับฐานข้อมูลคือ PHP ดังนั้นในการขอข้อมูลไปยังฐานข้อมูลคุณต้องเขียนสคริปต์ PHP และสะท้อนข้อมูลที่ส่งกลับไปยังไคลเอนต์ โดยทั่วไปการกระจายของภาษาตามเครื่องจริงคือ:

  1. ฝั่งเซิร์ฟเวอร์: PHP และ MySQL
  2. ฝั่งไคลเอ็นต์: HTML / CSS และ JavaScript

สิ่งนี้ตอบสนองต่อโมเดล MVC (Model, View, Controller) ซึ่งเรามีฟังก์ชันดังต่อไปนี้:

  1. MODEL:โมเดลคือสิ่งที่เกี่ยวข้องกับข้อมูลในกรณีนี้สคริปต์ PHP ที่จัดการตัวแปรหรือเข้าถึงข้อมูลที่จัดเก็บไว้ในกรณีนี้ในฐานข้อมูล MySQL ของเราและส่งเป็นข้อมูล JSON ไปยังไคลเอนต์
  2. มุมมอง:มุมมองคือสิ่งที่เราเห็นและควรเป็นอิสระจากโมเดลโดยสิ้นเชิง เพียงแค่ต้องแสดงข้อมูลที่มีอยู่ในแบบจำลอง แต่ไม่ควรมีข้อมูลที่เกี่ยวข้อง ในกรณีนี้มุมมองจะใช้ HTML และ CSS HTML เพื่อสร้างโครงสร้างพื้นฐานของมุมมองและ CSS เพื่อสร้างรูปร่างให้กับโครงสร้างพื้นฐานนี้
  3. CONTROLLER:คอนโทรลเลอร์คือส่วนต่อประสานระหว่างโมเดลของเรากับมุมมองของเรา ในกรณีนี้ภาษาที่ใช้คือ JavaScript และใช้ข้อมูลที่โมเดลส่งมาเป็นแพ็คเกจ JSON และใส่ไว้ในคอนเทนเนอร์ที่มีโครงสร้าง HTML วิธีควบคุมปฏิสัมพันธ์กับรูปแบบคือการใช้AJAX เราใช้เมธอด GETและPOSTเพื่อเรียกสคริปต์ PHP บนฝั่งเซิร์ฟเวอร์และเพื่อรับข้อมูลที่ส่งคืนจากเซิร์ฟเวอร์

สำหรับคอนโทรลเลอร์เรามีเครื่องมือที่น่าสนใจจริงๆเช่น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 วิธีที่เราทำงานกับเซิร์ฟเวอร์ใหม่เหล่านี้คือ:

  1. Node.jsและExpress :เมนเฟรมที่สร้างเซิร์ฟเวอร์ เราสามารถสร้างเซิร์ฟเวอร์ด้วยโค้ดไม่กี่บรรทัดหรือแม้แต่ใช้ไลบรารีเช่น Express เพื่อให้สร้างเซิร์ฟเวอร์ได้ง่ายขึ้น ด้วย Node.js และ Express เราจะจัดการคำร้องไปยังเซิร์ฟเวอร์จากไคลเอนต์และจะตอบกลับด้วยหน้าที่เหมาะสม
  2. Jade :ในการสร้างเพจเราใช้ภาษาเทมเพลตในกรณีนี้คือ Jade ซึ่งช่วยให้เราสามารถเขียนหน้าเว็บได้เหมือนกับที่เราเขียน HTML แต่มีความแตกต่างกัน (ใช้เวลาเล็กน้อย แต่เรียนรู้ได้ง่าย) จากนั้นในรหัสของเซิร์ฟเวอร์เพื่อตอบคำถามของลูกค้าเราเพียงแค่ต้องแสดงรหัส Jade เป็นรหัส HTML "จริง"
  3. Stylus :คล้ายกับ Jade แต่สำหรับ CSS ในกรณีนี้เราใช้ฟังก์ชันมิดเดิลแวร์เพื่อแปลงไฟล์สไตลัสเป็นไฟล์ CSS จริงสำหรับเพจของเรา

จากนั้นเรามีแพ็คเกจมากมายที่เราสามารถติดตั้งโดยใช้NPM (Node.js package manager) และใช้โดยตรงในเซิร์ฟเวอร์ Node.js ของเราที่ต้องการ (สำหรับผู้ที่ต้องการเรียนรู้ Node.js ลองใช้บทช่วยสอนสำหรับผู้เริ่มต้นนี้สำหรับภาพรวม) และในบรรดาแพ็คเกจเหล่านี้คุณมีบางส่วนในการเข้าถึงฐานข้อมูล ด้วยการใช้สิ่งนี้คุณสามารถใช้ JavaScript บนฝั่งเซิร์ฟเวอร์เพื่อเข้าถึงฐานข้อมูล My SQL

แต่สิ่งที่ดีที่สุดที่คุณสามารถทำได้หากคุณจะทำงานกับ Node.js คือการใช้ฐานข้อมูล NoSQL ใหม่เช่นMongoDBตามไฟล์ JSON แทนที่จะจัดเก็บตารางเช่น MySQL จะจัดเก็บข้อมูลในโครงสร้าง JSON ดังนั้นคุณสามารถใส่ข้อมูลที่แตกต่างกันในแต่ละโครงสร้างเช่นเวกเตอร์ตัวเลขยาวแทนที่จะสร้างตารางขนาดใหญ่สำหรับขนาดที่ใหญ่ที่สุด

ฉันหวังว่าคำอธิบายสั้น ๆ นี้จะเป็นประโยชน์สำหรับคุณและหากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้คุณมีแหล่งข้อมูลที่คุณสามารถใช้ได้ที่นี่:

  • Egghead : ไซต์นี้เต็มไปด้วยบทเรียนสั้น ๆ เกี่ยวกับ JavaScript และสภาพแวดล้อม มันคุ้มค่าที่จะลอง และให้ส่วนลดเป็นครั้งคราว
  • Code School : ด้วยหลักสูตรฟรีและน่าสนใจมากเกี่ยวกับเครื่องมือสำหรับนักพัฒนา Chrome เพื่อช่วยคุณในการทดสอบฝั่งไคลเอ็นต์
  • Codecademy : ด้วยหลักสูตรฟรีเกี่ยวกับ HTML, CSS, JavaScript, jQuery และ PHP ที่คุณสามารถทำตามตัวอย่างออนไลน์ได้
  • 10gen Education : พร้อมทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ MongoDB ในแบบฝึกหัดสำหรับภาษาต่างๆ
  • W3Schools : อันนี้มีแบบฝึกหัดเกี่ยวกับเรื่องนี้ทั้งหมดและคุณสามารถใช้เป็นสถานที่อ้างอิงได้เพราะมีตัวอย่างย่อจำนวนมากที่มีประโยชน์มาก
  • Udacity : สถานที่ที่มีหลักสูตรวิดีโอฟรีเกี่ยวกับวิชาต่างๆพร้อมสิ่งที่น่าสนใจสองสามอย่างเกี่ยวกับการพัฒนาเว็บและหลักสูตร WebGL ที่น่าทึ่งสำหรับกราฟิก 3 มิติด้วย JavaScript

ฉันหวังว่ามันจะช่วยให้คุณเริ่มต้นได้

มีความสุข!


คำตอบโดยละเอียดที่อธิบายกลไก
Duane

ขอบคุณ :) ฉันเพิ่งเพิ่มการอัปเดตต่อท้ายคำตอบเพื่อแก้ปัญหา คุณสามารถใช้เซิร์ฟเวอร์โหนดที่มีไลบรารีชื่อ "mysql" และฉันได้เพิ่มลิงก์ไปยังตัวสร้าง API ที่ฉันสร้างขึ้นเพื่อให้คุณใช้เพื่อเริ่มโครงการ API ใหม่ได้ หวังว่าจะช่วยได้
Timbergus

Re "then": JavaScript ที่ใช้ฝั่งเซิร์ฟเวอร์ย้อนกลับไปในปี 1995 เมื่อรวมอยู่ใน Netscape Enterprise Server Microsoft ใส่ "JScript" ในเซิร์ฟเวอร์ IIS หลังจากนั้นไม่นาน JavaScript บนเซิร์ฟเวอร์ไม่ใช่แบบใหม่จากระยะไกล
TJ Crowder

ฉันคิดว่าคงจะดีถ้าคำตอบนี้มีข้อมูลใหม่ล่าสุดที่ด้านบนหรือเพียงแค่ลบข้อมูลเก่าที่ล้าสมัย นอกจากนี้ยังมีรายละเอียดเล็กน้อยและเน้นเฉพาะภาษา คำตอบสั้น ๆ คือสามารถใช้ JavaScript เพื่อเชื่อมต่อกับฐานข้อมูล MySQL ได้โดยตรงจาก Node.JS (หรือสภาพแวดล้อมรันไทม์ฝั่งเซิร์ฟเวอร์อื่น ๆ ) แต่ไม่ใช่จากเบราว์เซอร์เนื่องจากความปลอดภัยของเบราว์เซอร์โดยเจตนา
Caltor

8

ฉันคิดว่าคุณจะต้องเพิ่มบางอย่างเช่น PHP ลงในสมการ PHP เพื่อโต้ตอบกับฐานข้อมูลจากนั้นคุณสามารถโทร AJAX ด้วย Javascript


8

ช้าไปหน่อย แต่เมื่อเร็ว ๆ นี้ฉันพบว่า MySql 5.7 มีปลั๊กอิน http ซึ่งผู้ใช้สามารถเชื่อมต่อโดยตรงกับ mysql ได้ทันที

มองหาไคลเอนต์ Http สำหรับ mysql 5.7


7

คำตอบง่ายๆคือไม่

JavaScript เป็นภาษาฝั่งไคลเอ็นต์ที่ทำงานในเบราว์เซอร์ ( แม้ว่าnode.js ) และ MySQL เป็นเทคโนโลยีฝั่งเซิร์ฟเวอร์ที่ทำงานบนเซิร์ฟเวอร์

นั่นหมายความว่าคุณมักใช้ภาษาฝั่งเซิร์ฟเวอร์เช่น ASP.NET หรือ PHP เพื่อเชื่อมต่อกับฐานข้อมูล


Javascript (ในรูปแบบเบราว์เซอร์ฝั่งไคลเอ็นต์) ถูกใช้ทุกวันเพื่อเชื่อมต่อกับเทคโนโลยีฝั่งเซิร์ฟเวอร์ (Apache, Nginx, PHP, NodeJS และอื่น ๆ ) ที่ทำงานบนเซิร์ฟเวอร์ คำจำกัดความของเซิร์ฟเวอร์ / ไคลเอนต์ต้องการให้ "แบ่ง" ระหว่างพวกเขาสามารถเอาชนะได้
jeteon

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-liveata เป็นจุดเริ่มต้นที่ดีสำหรับโครงการดังกล่าว" - docs.meteor.com
LeeGee

Meteor เขียนโดยใช้ Node.js ดังนั้นฉันจึงเกรงว่าคำตอบนี้จะไม่ได้เพิ่มอะไรใหม่หรือเปลี่ยนแปลงสิ่งต่างๆ คุณมีกรอบงานที่ครอบคลุมไคลเอนต์และเซิร์ฟเวอร์
Caltor

4

ทั้งนี้ขึ้นอยู่กับสภาพแวดล้อมของคุณคุณสามารถใช้แรดที่จะทำเช่นนี้ดูเว็บไซต์แรด สิ่งนี้ช่วยให้คุณสามารถเข้าถึงไลบรารี Java ทั้งหมดจากภายใน JavaScript


4

ใช่. มีปลั๊กอิน HTTP สำหรับ MySQL

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

ตอนนี้ฉันเพิ่ง googling เกี่ยวกับเรื่องนี้ซึ่งนำฉันไปสู่คำถาม stackoverflow นี้ คุณควรจะสามารถ AJAX ฐานข้อมูล MySQL ได้ในตอนนี้หรือในอนาคตอันใกล้ (พวกเขาอ้างว่ายังไม่พร้อมสำหรับการผลิต)


2

โดยทั่วไปคุณต้องใช้ภาษาสคริปต์ฝั่งเซิร์ฟเวอร์เช่น 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


หลังจากการตรวจสอบอย่างรวดเร็วสิ่งนี้ก่อให้เกิดภัยคุกคามต่อการขโมยข้อมูลรับรองฐานข้อมูลดังที่เห็นในบรรทัดที่ 6 ของสคริปต์นั้นซึ่งระบุvar strSrc = "http://mysqljs.com/sql.aspx?";
Dragas

@Dragas - ถูกต้อง javascript ไม่มีวิธีดั้งเดิมในการเชื่อมต่อกับฐานข้อมูล mysql ดังนั้น mysql dll จึงถูกโฮสต์ฝั่งเซิร์ฟเวอร์ดังนั้นการเรียก AJAX นอกจากนี้ยังหมายความว่าหากคุณใช้ไฟร์วอลล์บนพอร์ต 3306 คุณต้องเปิดสิ่งนี้เพื่อเชื่อมต่อขาเข้าจาก mysqljs.com
Fiach Reid


1

ใช่คุณสามารถ. ตัวเชื่อมต่อ 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");

0

ไม่

คุณต้องเขียน 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


0

คุณสามารถเชื่อมต่อกับ MySQL จาก Javascript ผ่านแอพเพล็ต JAVA แอพเพล็ต JAVA จะฝังไดรเวอร์ JDBC สำหรับ MySQL ที่จะช่วยให้คุณเชื่อมต่อกับ MySQL

โปรดจำไว้ว่าหากคุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระยะไกล (นอกเหนือจากที่คุณดาวน์โหลดแอปเพล็ต) คุณจะต้องขอให้ผู้ใช้ให้สิทธิ์เพิ่มเติมแก่แอพเพล็ต ตามค่าเริ่มต้นแอพเพล็ตสามารถเชื่อมต่อกับเซิร์ฟเวอร์ที่ดาวน์โหลดมาเท่านั้น


0

หากคุณไม่ได้ล็อก MySQL คุณสามารถเปลี่ยนไปใช้ PostgreSQL ได้ สนับสนุนกระบวนงาน JavaScript (PL / V8) ภายในฐานข้อมูล มันเร็วและทรงพลังมาก ชำระเงินที่โพสต์นี้


0

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

1
แบบสอบถาม MySQL ในตัวอย่างนี้อยู่ที่ไหน
Michael

@ ไมเคิล: คำถามที่ดี
Connor Gurney

-1

ฉันเข้าใจคำถามของคุณฉันคิดว่าคุณกำลังสับสนกับภาษาเช่น dot.net และ java ซึ่งคุณสามารถเปิดการเชื่อมต่อ DB ภายในโค้ดของคุณได้ ไม่ได้ JavaScript ไม่สามารถเชื่อมต่อกับ MySQL ได้โดยตรงเนื่องจาก JavaScript เป็นภาษาสคริปต์ฝั่งไคลเอ็นต์ (Exception Node.js) คุณต้องมีเลเยอร์กลางเช่น RESTful API เพื่อเข้าถึงข้อมูล


-3

คุณสามารถเพิ่มการเชื่อมต่อ 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?คำถามคือ
Alex.K.

นี่เป็นศูนย์เปอร์เซ็นต์ที่เกี่ยวข้องกับคำถามที่ถาม ผู้เขียนคำถามมีความเฉพาะเจาะจงมากเกี่ยวกับ Javascript
geekgugi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.