2 回答
TA贡献1802条经验 获得超6个赞
当然,可以从客户端 js 将数据插入数据库,但不要!我想不出一种方法可以做到这一点,不会暴露您的数据库凭据,让您容易受到恶意行为者的攻击。
您需要做的是在服务器上设置一个 php 脚本,然后使用 xhr 请求将您想要插入的数据(通过 POST 或 GET)发送到该脚本,并让该 php 脚本执行插入操作。然而,要确保这一点还需要做很多工作。谷歌“如何清理 php 中的 mysql 输入”并阅读了几篇相关文章。
根据您需要执行的操作,您可以自己清理输入,但推荐的方法是使用准备好的语句,您需要阅读特定实现的文档,无论是 mySQL 中的 mysqli 还是 pdo 还是其他一些库(假设您使用的是 SQL、postGRE、Oracle 等)。
华泰
=================================================
以下是如何在 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”意味着第一个值是字符串,第二个是整数。
以下是允许的值:
i - 整数 d - 双精度数 s - 字符串 b - BLOB
但无论如何请查看准备好的语句的文档。我在这个例子中使用了 msqli。
TA贡献1798条经验 获得超7个赞
您可能想检查 Ajax 请求。
您要做的基本上是创建从 javascript 到服务器上的 php 文件的异步请求。
Ajax 允许通过与后台服务器交换少量数据来异步更新网页。这意味着可以更新网页的部分内容,而无需重新加载整个页面。
添加回答
举报