基本上我想用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之间正确的通信方式吗?
2条答案
按热度按时间23c0lvtd1#
我不确定vba方法以及您到底需要做什么,但一种解决方案是编写requestdata.php,将查询结果解析为.csv文件,然后通过vba将其加载到excel中。将结果数组解析为.csv纯文本格式变得更加简单,因为php已经有了一个函数
fputcsv($file, $records)
使用(文件)。w6lpcovy2#
我可以帮你10%,因为我用几种语言编程,但没有vba/excell。我也用php编程…无论如何,我给你的答案是:假设你在c中创建一个新文件夹,然后在那里创建一个runme.bat文件。使用一个方法运行一个外部.bat文件并从该runme.bat获取外部结果,或多或少类似于
使用excelvba在命令提示符中执行命令
等待shell命令完成
您可以像我一样使用方法从批处理php cli运行:
也可以将runme.php放到该文件夹中:
然后您应该了解如何重新配置php ini以连接到mysql,您可能遇到的一些问题是php:mysql\u connect()无法通过命令行工作
如果您输入这样的命令,我已经通过windows cmd检查过了,并且工作在c:\xampp\php>php“c:\test\runme.php”yep2
你会说“是的”
作为c:\test\的runme.bat版本:
对于测试,我们在cmd:runmeyep2中调用它,结果是:yep2
然后通过修改批处理,您可以在mysql中填充数据,假设您将调用putmysqldata.php而不是runme.php。此时,创建另一个php文件从mysql读取(即使您只使用一个php文件通过不同的参数调用它来写入或读取),这样您就可以从mysql读取了
所以,如果你不太了解vba或者不知道怎么做就不容易了。遵循这些步骤,我想如果你比我更了解vba,你可以找出最短的方法。