基本上我想使用php作为中间件与MYSQL服务器通信。
由于需要安装驱动程序,我无法直接连接到数据库,我们的IT不允许在我们公司的计算机上安装驱动程序。
我理解如何使用vba - > php-> mysql插入数据,但我无法弄清楚如何从mysql获取数据到excel。 vba-> PHP-> mysql-> PHP-> VBA。
我想进行查询并将结果发送到vba excel。
这是可以工作的VBA代码,但它也会发回多个空格。我不确定这是否是正确的方法。
Private Sub ExtractPHP()
Dim item As String
Dim objHTTP As Object
Dim URL As String
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://localhost/php/requestdata.php"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencode"
objHTTP.send ("")
Worksheets("hiddendata").Range("k4").Value = Replace(objHTTP.responseText, " ", "")
End Sub
PHP代码如下。
<?php
$con = mysqli_connect("localhost","root","","php") or die("Connection was not created!");
$select = "select name FROM users where id=5";
$run = mysqli_query($con,$select);
$value = mysqli_fetch_array($run);
$result = $value["name"];
echo $result;
?>
放置在excel文件中的结果在文本下方有多个空格。这是在excel和mysql之间进行通信的正确方法吗?
我不确定VBA方法以及您需要做什么,但是一个解决方案是编写requestdata.php来将查询结果解析为.csv文件,然后通过VBA将其加载到Excel中。将结果数组解析为.csv纯文本格式变得更加微不足道,因为PHP已经有一个函数fputcsv($file, $records)
使用(documentation)。
我可以帮助你10%,因为我用几种语言编程,但没有什么vba / excell。我也在php编程...无论如何我的答案是:假设你在C中创建:一个新的文件夹,你创建一个runme.bat归档那里。使用一种方法运行外部.bat文件并从runme.bat获取外部结果或多或少像
Execute a command in command prompt using excel VBA
Wait for shell command to complete
你可以像我一样使用从批量运行php cli的方法:
你也可以在该文件夹中删除runme.php:
<?php
if(isset($argv[1])){
echo($argv[1]);
//here you can drop some mysql
}
?>
那么你应该了解如何配置php ini连接到mysql,你可以敢于的一些问题是qazxsw poi
如果你把这样的命令我已经通过windows cmd检查并工作c:\ xampp \ php> php“c:\ test \ runme.php”yep2
你得到“yep2”
作为c:\ test \的runme.bat版本:
PHP: mysql_connect() won't work via command line
为了测试我们在cmd:runme yep2中调用它,结果是:yep2
然后修改批处理你可以填写mysql中的数据让我们说你不会调用runme.php而是putmysqldata.php。此时创建另一个文件php从mysql读取(即使你只使用一个文件php通过不同的参数调用它来写或读)所以你将能够从mysql读取
如果你不太了解vba或怎么做,那就不容易了。按照这些步骤,我想如果你比我更了解一些vba,你可以找出最短的方法。