为了账号安全,请及时绑定邮箱和手机立即绑定

将JS脚本中的数据插入mysql数据库

将JS脚本中的数据插入mysql数据库

UYOU 2023-08-24 21:07:15
我创建了一个脚本来倒计时我提交到表单中的任何值,然后输出“提交的值+我单击提交按钮的那一刻的日期”作为结果。但现在我想在每次使用 SQL 查询使用表单时将结果存储到数据库中,然后使用 SELECT SQL 查询在另一个名为“log.php”的页面中回显所有这些结果。var timelog = [];function myF() {    countdown(s);    log = document.getElementById("log").innerHTML = s + 'at ' + new Date();    timelog.push(log);}function logged() {    document.getElementById("timeloggg").innerHTML = timelog;}我试图将结果分配给一个变量,但显然,我不能在脚本之外使用这个变量。经过一些谷歌搜索,我被告知要使用 Ajax,但遗憾的是我无法弄清楚如何使用 ajax 插入数据,因为所有代码示例都只是关于从数据库调用数据。那么关于如何将结果插入我的数据库有什么建议吗?我还是个初学者,所以如果您不介意的话请详细解释。
查看完整描述

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。


查看完整回答
反对 回复 2023-08-24
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您可能想检查 Ajax 请求。

您要做的基本上是创建从 javascript 到服务器上的 php 文件的异步请求。

Ajax 允许通过与后台服务器交换少量数据来异步更新网页。这意味着可以更新网页的部分内容,而无需重新加载整个页面。


查看完整回答
反对 回复 2023-08-24
  • 2 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信