Can JavaScript connect with MySQL? If so, how?
Client-side JavaScript cannot access MySQL without some kind of bridge. But the above bold statements that JavaScript is just a client-side language are incorrect -- JavaScript can run client-side and server-side, as with Node.js.
Node.js can access MySQL through something like https://github.com/sidorares/node-mysql2
You might also develop something using Socket.IO
Did you mean to ask whether a client-side JS app can access MySQL? I am not sure if such libraries exist, but they are possible.
EDIT: Since writing, we now have MySQL Cluster:
The MySQL Cluster JavaScript Driver for Node.js is just what it sounds like it is – it’s a connector that can be called directly from your JavaScript code to read and write your data. As it accesses the data nodes directly, there is no extra latency from passing through a MySQL Server and need to convert from JavaScript code//objects into SQL operations. If for some reason, you’d prefer it to pass through a MySQL Server (for example if you’re storing tables in InnoDB) then that can be configured.
JSDB offers a JS interface to DBs.
A curated set of DB packages for Node.js from sindresorhus.
Yes. There is an HTTP plugin for MySQL.
http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/
I'm just googling about it now, which led me to this stackoverflow question. You should be able to AJAX a MySQL database now or in the near future (they claim it's not ready for production).
Typically, you need a server side scripting language like PHP to connect to MySQL, however, if you're just doing a quick mockup, then you can use http://www.mysqljs.com to connect to MySQL from Javascript using code as follows:
MySql.Execute(
"mysql.yourhost.com",
"username",
"password",
"database",
"select * from Users",
function (data) {
console.log(data)
});
It has to be mentioned that this is not a secure way of accessing MySql, and is only suitable for private demos, or scenarios where the source code cannot be accessed by end users, such as within Phonegap iOS apps.
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.
And this is my example bridge written in C# with websocket-sharp library:
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 side:
var ws = new WebSocket("ws://localhost/");
ws.send("server=localhost;user=root;database=mydb;");
ws.send("select * from users");
You can add mysql connection using PHP file. Below is the example of PHP file.
<?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);
?> }
If you want to connect to a MySQL database using JavaScript, you can use Node.js and a library called mysql. You can create queries, and get results as an array of registers. If you want to try it, you can use my project generator to create a backend and choose MySQL as the database to connect. Then, just expose your new REST API or GraphQL endpoint to your front and start working with your MySQL database.
OLD ANSWER LEFT BY NOSTALGIA
THEN
As I understand the question and correct me if I am wrong, it refers to the classic server model with JavaScript only on the client-side. In this classic model, with LAMP servers (Linux, Apache, MySQL, PHP) the language in contact with the database was PHP, so to request data to the database you need to write PHP scripts and echo the returning data to the client. Basically, the distribution of the languages according to physical machines was:
This answered to an MVC model (Model, View, Controller) where we had the following functionality:
For the controller, we have really interesting tools like jQuery, as "low-level" library to control the HTML structure (DOM), and then new, more high-level ones as Knockout.js that allow us to create observers that connect different DOM elements updating them when events occur. There is also Angular.js by Google that works in a similar way, but seems to be a complete environment. To help you to choose among them, here you have two excellent analyses of the two tools: Knockout vs. Angular.js and Knockout.js vs. Angular.js. I am still reading. Hope they help you.
NOW
In modern servers based in Node.js, we use JavaScript for everything. Node.js is a JavaScript environment with many libraries that work with Google V8, Chrome JavaScript engine. The way we work with these new servers is:
Then we have a lot of packages we can install using the NPM (Node.js package manager) and use them directly in our Node.js server just requiring it (for those of you that want to learn Node.js, try this beginner tutorial for an overview). And among these packages, you have some of them to access databases. Using this you can use JavaScript on the server-side to access My SQL databases.
But the best you can do if you are going to work with Node.js is to use the new NoSQL databases like MongoDB, based on JSON files. Instead of storing tables like MySQL, it stores the data in JSON structures, so you can put different data inside each structure like long numeric vectors instead of creating huge tables for the size of the biggest one.
I hope this brief explanation becomes useful to you, and if you want to learn more about this, here you have some resources you can use:
I hope it helps you to start.
Have fun!