¿Puede JavaScript conectarse con MySQL?


¿Puede JavaScript conectarse con MySQL? Si es así, ¿cómo?

Author: Konerak, 2010-06-11

18 answers

No, JavaScript no puede conectarse directamente a MySQL. Pero puedes mezclar JS con PHP para hacerlo.

JavaScript es un lenguaje del lado del cliente y su base de datos MySQL se va a ejecutar en un servidor

 23
Author: konradowy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-11 06:57:05

JavaScript del lado del cliente no puede acceder a MySQL sin algún tipo de puente. Pero las declaraciones en negrita anteriores de que JavaScript es solo un lenguaje del lado del cliente son incorrectas: JavaScript puede ejecutar el lado del cliente y el lado del servidor, como con Node.js.

Nodo

.js puede acceder a MySQL a través de algo como https://github.com/sidorares/node-mysql2

También podrías desarrollar algo usando Socket.IO

¿Quería preguntar si una aplicación JS del lado del cliente puede acceder a MySQL? No lo soy. seguro si tales bibliotecas existen, pero son posibles.

EDIT : Desde que escribimos, ahora tenemos MySQL Cluster :

El controlador JavaScript de MySQL Cluster para Node.js es justo lo que suena como es - es un conector que se puede llamar directamente desde su código JavaScript para leer y escribir sus datos. Como accede a los nodos de datos directamente, no hay latencia adicional al pasar a través de un servidor MySQL y necesita convertir código JavaScript / / objetos en Operaciones SQL. Si por alguna razón, prefiere que pase a través de un servidor MySQL (por ejemplo, si está almacenando tablas en InnoDB), entonces eso se puede configurar.

 71
Author: LeeGee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-14 12:13:00

ENTONCES

Como entiendo la pregunta y me corrijo si me equivoco, se refiere al modelo de servidor clásico con JavaScript solo en el lado del cliente. En este modelo clásico, con servidores LAMP (Linux, Apache, MySQL, PHP) el lenguaje en contacto con la base de datos es PHP, por lo que para solicitar datos a la base de datos necesita escribir scripts PHP y echo los datos devueltos al cliente. Básicamente, la distribución de idiomas según las máquinas físicas is:

  1. Lado del servidor: PHP y MySQL.
  2. Lado del cliente: HTML/CSS y JavaScript.

Esto responde a un modelo MVC (Model, View, Controller) donde tenemos la siguiente funcionalidad:

  1. MODELO: El modelo es el que se ocupa de los datos, en este caso, los scripts PHP que gestionan variables o que acceden a los datos almacenados, en este caso en nuestra base de datos MySQL y los envían como datos JSON al cliente.
  2. VISTA: La vista es lo que vemos y debe ser completamente independiente del modelo. Solo necesita mostrar los datos contenidos en el modelo, pero no debe tener datos relevantes en él. En este caso, la vista utiliza HTML y CSS. HTML para crear la estructura básica de la vista, y CSS para dar forma a esta estructura básica.
  3. CONTROLADOR: El controlador es la interfaz entre nuestro modelo y nuestra vista. En este caso, el lenguaje utilizado es JavaScript y toma los datos que el modelo nos envía como un paquete JSON y los coloca dentro de los contenedores que ofrecen la estructura HTML. La forma en que el controlador interactúa con el modelo es usando AJAX. Usamos los métodos GET y POST para llamar scripts PHP en el lado del servidor y capturar los datos devueltos desde el servidor.

Para el controlador tenemos herramientas muy interesantes como jQuery, como biblioteca de "bajo nivel" para controlar la estructura HTML (DOM), y luego nuevo, más de alto nivel como Knockout.js que nos permiten crear observadores que conectan diferentes elementos DOM actualizándolos cuando ocurren eventos. También hay Angular.js de Google que funciona de manera similar, pero parece ser un entorno completo. Para ayudarle a elegir entre los, aquí hay dos excelentes análisis de los dos herramientas: Knockout vs Angular.js y Knockout.js vs Angular.js . Todavía estoy leyendo. Espero que ayuden usted.

AHORA

En servidores modernos basados en Nodo.js, usamos JavaScript para todo. Nodo.js es un entorno JavaScript con muchas bibliotecas que funcionan con Google V8, motor JavaScript Chrome. La forma en que trabajamos con estos nuevos servidores es:

  1. Nodo.js y Express: El marco principal donde se construye el servidor. Podemos crear un servidor con unas pocas líneas de código o incluso usar bibliotecas como Express para hacer aún más fácil crear el servidor. Con Nodo.js y Express, gestionaremos las peticiones al servidor de los clientes y las responderemos con las páginas apropiadas.
  2. Jade: Para crear las páginas utilizamos un lenguaje de plantillas, en este caso, Jade, que nos permite escribir páginas web como estábamos escribiendo HTML pero con diferencias (lleva un poco de tiempo pero es fácil de aprender). Luego, en el código del servidor para responder a las peticiones del cliente, solo necesitamos renderizar el código Jade en HTML "real" codificar.
  3. Stylus: Similar a Jade pero para css. En este caso, utilizamos una función de middleware para convertir el archivo stylus en un archivo CSS real para nuestra página.

Entonces tenemos muchos paquetes que podemos instalar usando el MNP (Nodo.js package manager) y utilizarlas directamente en nuestro nodo.js server solo lo requiere (para aquellos de ustedes que quieren aprender Nodo.js, prueba este tutorial para principiantes para una descripción general). Y entre estos paquetes, usted tiene algunos de ellos para acceder a las bases de datos. Usando esto puede usar JavaScript en el lado del servidor para acceder a Mis bases de datos SQL.

Pero lo mejor que puedes hacer si vas a trabajar con Node.js es utilizar las nuevas bases de datos NoSQL como MongoDB, basado en archivos JSON. En lugar de almacenar tablas como MySQL, almacena los datos en estructuras JSON, por lo que puede poner diferentes datos dentro de cada estructura como vectores numéricos largos en lugar de crear tablas enormes para el tamaño de la el más grande.

Espero que esta breve explicación sea útil para usted, y si desea aprender más sobre esto, aquí tiene algunos recursos que puede usar:

  • Egghead: Este sitio está lleno de grandes tutoriales acerca de JavaScript y su entorno. Vale la pena intentarlo. Y el hacer descuentos de vez en cuando.
  • Escuela de Código: Con un curso gratuito y muy interesante sobre las herramientas de desarrollo de Chrome para ayudarle a probar el lado del cliente.
  • Codecademy: Con cursos gratuitos sobre HTML, CSS, JavaScript, jQuery y PHP que puedes seguir con ejemplos en línea.
  • 10gen Educación: Con todo lo que necesitas saber sobre MongoDB en tutoriales para diferentes idiomas.
  • W3Schools: Este tiene tutoriales sobre todo esto y se puede utilizar como un lugar de referencia porque tiene una gran cantidad de ejemplos de código corto realmente utilidad.
  • Udacity: Un lugar con cursos de video gratuitos sobre diferentes temas con algunos interesantes sobre desarrollo web y mi preferido, un increíble curso WebGL para gráficos 3D con JavaScript.

ACTUALIZACIÓN!

Ahora mismo, teniendo un servidor de nodos, si desea comunicarse con una base de datos MySQL, puede usar una biblioteca llamada mysql. Puede crear consultas como lo hizo con PHP, y puede probarlo usando un Generador de API He creado, que se puede descargar utilizando NPM. Cuenta con un asistente que te permite elegir qué bases de datos quieres utilizar, entre otras cosas.

Espero que te ayude a empezar.

Diviértete!

 50
Author: Timbergus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-25 17:01:42

Creo que tendría que añadir algo como PHP en la ecuación. PHP para interactuar con la base de datos y luego podría hacer llamadas AJAX con Javascript.

 8
Author: Kerry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-11 06:57:37

La respuesta simple es: no.

JavaScript es un lenguaje del lado del cliente que se ejecuta en el nodo del navegador (.js no obstante) y MySQL es una tecnología del lado del servidor que se ejecuta en el servidor.

Eso significa que normalmente utiliza un lenguaje del lado del servidor como ASP.NET o PHP para conectarse a la base de datos.

 7
Author: Dean Harding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-11 06:57:44

Un poco tarde, pero recientemente he descubierto que MySQL 5.7 tiene http plugin throuh que el usuario puede conectarse directamente a mysql ahora.

Busque el cliente Http para mysql 5.7

 7
Author: Atul Chaudhary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-03 02:03:16

SÍ? Mira un meteorito. Enlaces:

Http://meteor.com/screencast y http://net.tutsplus.com/tutorials/javascript-ajax/whats-this-meteor-thing/

No entiendo cómo se hace. Pero Nettuts + poner esta cosa en la sección javascript-ajax, tal vez la magia sucede.

También muestra alguna forma de conectarse e insertarse a MongoDB con JS, así:

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});
 6
Author: Ivan Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-11 19:52:16

Dependiendo de su entorno, puede usar Rhino para hacer esto, consulte Sitio web de Rhino. Esto le da acceso a todas las bibliotecas de Java desde JavaScript.

 4
Author: Kusmeroglu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-11 20:11:15

Sí. Hay un plugin HTTP para MySQL.

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

Ahora solo estoy buscando en Google, lo que me llevó a esta pregunta de stackoverflow. Usted debe ser capaz de AJAX una base de datos MySQL ahora o en un futuro próximo (afirman que no está listo para la producción).

 4
Author: Nick Manning,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-24 18:13:45

Puede enviar solicitudes AJAX a algunos envoltorios RESTful del lado del servidor para MySQL, como DBSlayer, PhpRestSQL o AlsoSQL (para Drizzle , una bifurcación de MySQL).

 1
Author: niutech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-10 15:02:07

No.

Necesita escribir un wrapper en PHP, y luego exportar los datos devueltos (probablemente como Json). NUNCA, obtenga de su" _GET " el código SQL, ya que esto se llama una inyección SQL (las personas que aprenden esto tendrán control total sobre su base de datos).

Este es un ejemplo que escribí:

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

Aprenda sobre las inyecciones SQL por favor.

 0
Author: elcuco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-11 07:00:58

Puede conectarse a MySQL desde Javascript a través de un applet de JAVA. El applet de JAVA incrustaría el controlador JDBC para MySQL que le permitirá conectarse a MySQL.

Recuerde que si desea conectarse a un servidor MySQL remoto (que no sea desde el que descargó el applet) deberá solicitar a los usuarios que otorguen permisos extendidos al applet. De forma predeterminada, applet solo puede conectarse al servidor desde el que se descargan.

 0
Author: Rajiv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-10 20:30:34

JavaScript no puede conectarse directamente a la base de datos para obtener los datos necesarios, pero puede usar AJAX. Para facilitar la solicitud AJAX al servidor, puede usar jQuery JS framework http://jquery.com . Aquí hay un pequeño ejemplo

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(); 
$out['first']   = 'first value';
$out['second']   = 'second value';
echo json_encode($out);
 0
Author: Octan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-18 13:18:45

Si no está bloqueado en MySQL, puede cambiar a PostgreSQL. Soporta procedimientos JavaScript (PL / V8) dentro de la base de datos. Es muy rápido y potente. Echa un vistazo a este post.

 0
Author: ramigg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-13 05:16:28

Normalmente, necesita un lenguaje de scripting del lado del servidor como PHP para conectarse a MySQL, sin embargo, si solo está haciendo una maqueta rápida, entonces puede usar http://www.mysqljs.com para conectarse a MySQL desde Javascript usando el siguiente código:

MySql.Execute(
    "mysql.yourhost.com", 
    "username", 
    "password", 
    "database", 
    "select * from Users", 
    function (data) {
        console.log(data)
});

Hay que mencionar que esta no es una forma segura de acceder a MySQL, y solo es adecuada para demostraciones privadas, o escenarios donde los usuarios finales no pueden acceder al código fuente, como dentro de las aplicaciones Phonegap iOS.

 0
Author: Fiach Reid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-11 17:07:46

Entendí tu pregunta Creo que la estás confundiendo con idiomas como dot.net y java donde puede abrir la conexión de base de datos dentro de su código. No, JavaScript no puede conectarse directamente a MySQL ya que JavaScript es un lenguaje de scripting del lado del cliente (Nodo de excepción.js).Necesita una capa intermedia como la API RESTful para acceder a los datos.

 -1
Author: Sagittarius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-03 10:53:08

Sí puedes. Los conectores MySQL usan TCP para la conexión, y en JS hay una pequeña versión modificada del cliente TCP llamada Websocket. Pero no puede conectarse directamente al servidor MySQL con websocket. Necesitará algún puente de 3rd party entre websocket y mysql. Recibe la consulta de websocket, la envía a mysql, el resultado de la respuesta y la reenvía a JS.

Y este es mi ejemplo de puente escrito en C # con 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();
    }
}

Lado JS:

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

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

ws.send("select * from users");
 -1
Author: Brain Storm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-07 21:31:19

Puede agregar una conexión mysql usando el archivo PHP. A continuación se muestra el ejemplo del archivo 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);
   ?> }
 -4
Author: Shivu09,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-04 10:59:24