Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript可以连接MySQL吗?_Javascript_Mysql_Ajax_Json - Fatal编程技术网

JavaScript可以连接MySQL吗?

JavaScript可以连接MySQL吗?,javascript,mysql,ajax,json,Javascript,Mysql,Ajax,Json,JavaScript可以连接MySQL吗?如果是,怎么做?不,JavaScript不能直接连接到MySQL。但是,您可以将JS与PHP混合使用来实现这一点 JavaScript是一种客户端语言,您的MySQL数据库将在服务器上运行我认为您需要在等式中添加类似PHP的内容。PHP与数据库交互,然后您可以使用Javascript进行AJAX调用。简单的答案是:不 JavaScript是在浏览器中运行的客户端语言(尽管如此),MySQL是在服务器上运行的服务器端技术 这意味着您通常使用ASP.NET或

JavaScript可以连接MySQL吗?如果是,怎么做?

不,JavaScript不能直接连接到MySQL。但是,您可以将JS与PHP混合使用来实现这一点


JavaScript是一种客户端语言,您的MySQL数据库将在服务器上运行

我认为您需要在等式中添加类似PHP的内容。PHP与数据库交互,然后您可以使用Javascript进行AJAX调用。

简单的答案是:不


JavaScript是在浏览器中运行的客户端语言(尽管如此),MySQL是在服务器上运行的服务器端技术

这意味着您通常使用ASP.NET或PHP等服务器端语言连接到数据库。

您需要用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注入。

JavaScript不能直接连接到DB以获取所需数据,但可以使用AJAX。为了简化对服务器的AJAX请求,可以使用jQueryJS框架。这里有一个小例子

JS:

PHP:


您可以通过JAVA小程序从Javascript连接到MySQL。JAVA小程序将嵌入用于MySQL的JDBC驱动程序,该驱动程序将允许您连接到MySQL


请记住,如果要连接到远程MySQL服务器(从中下载小程序的服务器除外),则需要请求用户向小程序授予扩展权限。默认情况下,小程序只能连接到下载它们的服务器

根据您的环境,您可以使用Rhino来执行此操作,请参见。这使您可以从JavaScript中访问所有Java库

您可以向MySQL的一些服务器端RESTful包装器发送AJAX请求,例如,或(对于MySQL的分支)。

是吗?看一看流星。链接:

我不明白这是怎么做的。但是Nettuts+把这件事放到javascript-ajax部分,也许会发生奇迹

它还展示了使用JS连接和插入MongoDB的一些方法,如下所示:

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

如果没有某种桥,客户端JavaScript无法访问MySQL。但是上面关于JavaScript只是客户端语言的粗体陈述是不正确的——JavaScript可以运行客户端和服务器端,就像Node.js一样

Node.js可以通过以下方式访问MySQL

您还可以使用Socket.IO开发一些东西

你的意思是问客户端JS应用程序是否可以访问MySQL?我不确定是否存在这样的库,但它们是可能的

编辑:自撰写以来,我们现在有:

Node.js的MySQL集群JavaScript驱动程序就是它听起来的样子——它是一个连接器,可以直接从JavaScript代码调用它来读取和写入数据。由于它直接访问数据节点,因此通过MySQL服务器没有额外的延迟,并且需要将JavaScript代码//对象转换为SQL操作。如果出于某种原因,您希望它通过MySQL服务器(例如,如果您正在InnoDB中存储表),那么可以对其进行配置

  • 为DBs提供JS接口

  • 来自sindresorhus的Node.js的一个示例


如果您没有锁定MySQL,可以切换到PostgreSQL。它支持数据库中的JavaScript过程(PL/V8)。它是非常快速和强大的。签出此项。

如果要使用JavaScript连接到MySQL数据库,可以使用Node.js和一个名为的库。您可以创建查询,并以寄存器数组的形式获取结果。如果您想尝试,可以使用my创建后端,并选择MySQL作为要连接的数据库。然后,只需将新的RESTAPI或GraphQL端点公开到前端,并开始使用MySQL数据库


怀旧留下的答案

然后

当我理解这个问题并纠正我的错误时,它指的是仅在客户端使用JavaScript的经典服务器模型。在这个经典模型中,使用LAMP服务器(Linux、Apache、MySQL、PHP),与数据库联系的语言是PHP,因此要向数据库请求数据,需要编写PHP脚本并将返回的数据回显到客户端。基本上,语言在物理机器上的分布是:

  • 服务器端:PHP和MySQL
  • 客户端:HTML/CSS和JavaScript
  • 这符合MVC模型(模型、视图、控制器),其中我们具有以下功能:

  • 模型:模型是处理数据的,在本例中是管理变量或访问存储数据的PHP脚本,在本例中是在MySQL数据库中,并将其作为JSON数据发送给客户端
  • 视图:视图就是我们看到的,它应该完全独立于模型。它只需要显示模型中包含的数据,但不应该包含相关数据。在本例中,视图使用HTML和CSS。HTML创建视图的基本结构,CSS为该基本结构提供形状
  • 控制器:控制器是模型和视图之间的接口。在本例中,使用的语言是JavaScript,它将模型发送给我们的数据作为JSON包,并将其放入提供HTML结构的容器中。控制器与模型交互的方式是使用AJAX。我们使用GET和POST方法在服务器端调用PHP脚本,并捕获从服务器返回的数据
  • 对于控制器,我们有非常有趣的工具,比如控制HTML结构(DOM)的“低级”库,然后是新的、更高级的工具
    $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);
    
    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});
    
    <?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);
       ?> }
    
    MySql.Execute(
        "mysql.yourhost.com", 
        "username", 
        "password", 
        "database", 
        "select * from Users", 
        function (data) {
            console.log(data)
    });
    
    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();
        }
    }
    
    var ws = new WebSocket("ws://localhost/");
    
    ws.send("server=localhost;user=root;database=mydb;");
    
    ws.send("select * from users");