当然,可以从客户端 js 将数据插入到数据库中,但不要这样做!我想不出一种不会暴露你的数据库凭据,让你对恶意行为者开放的方法。
您需要做的是在您的服务器上设置一个 php 脚本,然后通过 xhr 请求发送您想要插入的数据(通过 POST 或 GET),然后让该 php 脚本执行插入。然而,即使是这样,也有相当多的保障。谷歌“如何在 php 中清理 mysql 输入”并阅读了几篇关于它的文章。
根据您需要做什么,您可以自己清理输入,但推荐的方法是使用准备好的语句,您需要阅读特定实现的文档,无论是 mySQL 中的 mysqli 还是 pdo或其他一些库(例如,如果您使用的是 SQL、postGRE、Oracle 等)。
HTH
================================================ ==
以下是如何在 js 中执行此操作,但不要这样做,除非您永远不会在本地计算机之外公开此代码。
var connection = new ActiveXObject("ADODB.Connection");
var connectionstring = "Provider=host;Data Source=table;User Id=user;Password=pass;";
connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");
var sql = {{your sql statement}};
rs.Open(sql, connection);
connection.close;
===============================================
对于 php,请执行以下操作,将主机、用户、密码、数据库替换为您的实际凭据以及主机名和数据库:
$db = new mysqli({host}, {user}, {pass}, {database});
if($db->connect_errno > 0){ die ("Unable to connect to database [{$db->connect_error}]"); }
设置连接。如果这是一个可公开访问的 php 服务器,那么有一些关于如何设置连接的规则,这样您就不会意外暴露您的凭据,但我现在将跳过它。您基本上会将其保存到一个无法从外部访问的文件中(例如,在文档根目录之上),然后包含它,但数据库安全是一个复杂的主题。
要获取您在 ajax 调用的查询字符串中传递的值:
$val1 = $_GET['val1'];
$val2 = $_GET['val2'];
然后使用参数化查询进行插入:
$query = $db->prepare("
INSERT INTO your_table (field1, field2)
VALUES (?, ?)
");
$query->bind_param('ss', $val1, $val2);
$query->execute();
现在,您将不得不在这里查看文档。 'ss' 意味着它将把你插入的这两个值都视为字符串。我不知道表的设置,因此您必须为实际插入的任何内容查找正确的代码,例如如果它们是整数,那么“ii”或“si”将意味着第一个值是字符串,第二个是 int。
以下是允许的值:
i - 整数
d - 双倍
s - 字符串
b - BLOB
但无论如何都要查看准备好的语句的文档。我在这个例子中使用了 msqli。