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

问题描述 投票:0回答:2

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

php mysql vba
2个回答
0
投票

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


0
投票

我可以帮助你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,你可以找出最短的方法。

© www.soinside.com 2019 - 2024. All rights reserved.