将数据从vba(excel)发送到php,反之亦然

dced5bon  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(420)

基本上我想用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之间正确的通信方式吗?

23c0lvtd

23c0lvtd1#

我不确定vba方法以及您到底需要做什么,但一种解决方案是编写requestdata.php,将查询结果解析为.csv文件,然后通过vba将其加载到excel中。将结果数组解析为.csv纯文本格式变得更加简单,因为php已经有了一个函数 fputcsv($file, $records) 使用(文件)。

w6lpcovy

w6lpcovy2#

我可以帮你10%,因为我用几种语言编程,但没有vba/excell。我也用php编程…无论如何,我给你的答案是:假设你在c中创建一个新文件夹,然后在那里创建一个runme.bat文件。使用一个方法运行一个外部.bat文件并从该runme.bat获取外部结果,或多或少类似于
使用excelvba在命令提示符中执行命令
等待shell命令完成
您可以像我一样使用方法从批处理php cli运行:
也可以将runme.php放到该文件夹中:

<?php
   if(isset($argv[1])){
     echo($argv[1]);
    //here you can drop some mysql
   }
?>

然后您应该了解如何重新配置php ini以连接到mysql,您可能遇到的一些问题是php:mysql\u connect()无法通过命令行工作
如果您输入这样的命令,我已经通过windows cmd检查过了,并且工作在c:\xampp\php>php“c:\test\runme.php”yep2
你会说“是的”
作为c:\test\的runme.bat版本:

rem @echo off
set parameter=%1
set PHP_BIN="c:\xampp\php\php.exe"
set script=%cd%\runme.php
%PHP_BIN%  %script% %parameter%

对于测试,我们在cmd:runmeyep2中调用它,结果是:yep2
然后通过修改批处理,您可以在mysql中填充数据,假设您将调用putmysqldata.php而不是runme.php。此时,创建另一个php文件从mysql读取(即使您只使用一个php文件通过不同的参数调用它来写入或读取),这样您就可以从mysql读取了
所以,如果你不太了解vba或者不知道怎么做就不容易了。遵循这些步骤,我想如果你比我更了解vba,你可以找出最短的方法。

相关问题