"") Set objHTTP = CreateObject("MSXML2.ServerXMLH-6ren">
gpt4 book ai didi

php - 发布/获取 excel 数据的最佳方式是什么

转载 作者:行者123 更新时间:2023-11-28 23:38:23 25 4
gpt4 key购买 nike

现在我有这个 vba 脚本:

i = 11

While (Range("B" & i) <> "")
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "https://example.com/submit/?no=" & Range("B" & i).Value & "&soal=" & Range("C" & i).Value & "&a=" & Range("E" & i).Value & "&b=" & Range("F" & i).Value & "&c=" & Range("G" & i).Value & "&d=" & Range("H" & i).Value & "&benar=" & Range("J" & i).Value & ""
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
i = i + 1

Wend

一切正常。做我想做的事。问题是,发布 60 个问题花了很长时间(大约 60 秒)。 60 秒不是真正的问题。我可以等 60 秒。问题出在我的主机中。他们将我的 IP 标记为 SPAMMER 之类的。因为在我成功发布问题后,我得到了 ERR_CONNECTION_RESET。它只发生在我身上。如果通过代理打开该网站是没问题的。

所以我的问题是,有没有一种方法可以通过 excel vba 将 60 个问题发布到 php 而不会使我的 IP 被托管提供商阻止。

submit.php的内容

<?php 
include ('../db.php');
$sql = 'INSERT INTO `soal` (`id`, `no`, `soal`, `options`, `a`, `b`, `c`, `d`, `e`, `benar`) VALUES (NULL, "'.$_GET['no'].'", "'.$_GET['soal'].'", "4", "'.$_GET['a'].'", "'.$_GET['b'].'", "'.$_GET['c'].'", "'.$_GET['d'].'", "e", "'.$_GET['benar'].'");';
$conn->query($sql);

示例 excel 行 http://snag.gy/A4o9D.jpg

附注我知道 mysql 卫生、安全、注入(inject)等等,让我们只关注手头的事情,而不是谈论安全。

谢谢。

最佳答案

注意我的 vba 已经生锈了(比如,10 年以上),字符串连接可能是错误的,也许使用 URL = URL & "... 而不是 URL &= "。 ..

但基本思想是构建一个长查询字符串,然后发出单个 http 请求:

i = 11
URL = "https://example.com/submit/?"
While (Range("B" & i) <> "")

URL &= "no[" & i & "]=" & Range("B" & i).Value & "&soal[" & i & "]=" & Range("C" & i).Value & "&a[" & i & "]=" & Range("E" & i).Value & "&b[" & i & "]=" & Range("F" & i).Value & "&c[" & i & "]=" & Range("G" & i).Value & "&d[" & i & "]=" & Range("H" & i).Value & "&benar[" & i & "]=" & Range("J" & i).Value

i = i + 1

Wend

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")

在 php 端,您将获得数组,因此在循环中构建查询并将所有值也插入一个查询中:

$sql = 'INSERT INTO `soal` (`id`, `no`, `soal`, `options`, `a`, `b`, `c`, `d`, `e`, `benar`) VALUES ';
$values = [];
foreach($_GET['no'] as $key => $ignore){
$values[]= '(NULL, "'.$_GET['no'][$key].'", "'.$_GET['soal'][$key].'", "4", "'.$_GET['a'][$key].'", "'.$_GET['b'][$key].'", "'.$_GET['c'][$key].'", "'.$_GET['d'][$key].'", "e", "'.$_GET['benar'][$key].'")';
}
$sql .= implode(',', $values) . ';';
$conn->query($sql);

关于php - 发布/获取 excel 数据的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com