Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 将JS脚本中的数据插入mysql数据库_Javascript_Php_Mysql - Fatal编程技术网

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

Javascript 将JS脚本中的数据插入mysql数据库,javascript,php,mysql,Javascript,Php,Mysql,我创建了一个脚本来倒计时我提交到表单中的任何值,然后输出“提交的值+我单击提交按钮的日期”作为结果 但现在我想在每次使用SQL查询表单时将结果存储到数据库中,然后使用SELECT SQL查询将所有这些结果回送到另一个名为“log.php”的页面中 var timelog = []; function myF() { countdown(s); log = document.getElementById("log").innerHTML = s + 'at '

我创建了一个脚本来倒计时我提交到表单中的任何值,然后输出“提交的值+我单击提交按钮的日期”作为结果

但现在我想在每次使用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插入数据,因为所有的代码示例都只是关于从数据库调用数据


那么,关于如何将结果插入我的数据库有什么建议吗?我还是个初学者,如果你不介意的话,请详细解释。

当然,可以从客户端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,执行以下操作,用实际凭据、主机名和数据库替换主机、用户、pass和db:

$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团


但无论如何,请查看文档以获取准备好的语句。我在本例中使用了msqli。

您可能需要检查Ajax请求

我建议你去

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

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


嗯,这将主要是一个本地项目,我不打算向公众发布,只是一个帮助我个人工作的工具。也许将来我会发布它,但我不会。因此,我只是在寻找一个解决方案,而不考虑对输入进行消毒。另外,您能再解释一下如何发送我想在xhr请求中插入的数据吗?谢谢,没问题。不过,您仍然希望在服务器上设置php脚本。这可能比在js中插入更容易。设置一个php脚本,比如insert.php。然后使用查询字符串从ajax调用它,如:insert.php?val=test。然后在insert.php中添加以下行:echo“”;打印(美元);;回声“;出口您将看到查询字符串变量是如何存储的,在本例中为$\u GET['val']。然后使用该值编写mysql语句。如果您的php脚本可以从internet访问,您仍然需要保护输入。这可能有点太复杂了,无法在注释中执行。告诉我你使用的是什么数据库,我会编辑原始答案。我使用Mysql数据库如果你给我提供数据库结构以及你尝试过的js和php代码,我会在我的Mysql数据库上设置一个相同的表,并对代码进行故障排除。去掉你的证件,我不需要它们,你也不应该分享它们。