2

我发现这个回复很有帮助

如何在 Volusion API 中编写连接查询

我正在寻找一种将我自己的 .SQL 和 .XSD 文件添加到 /vspfiles/schema/Generic 文件夹并能够将参数传递给它的方法。有谁知道这是否可能。

SQL的一个非常基本的例子是这样的......

select * from Orders where order_id = "-ORDERID-"

...而且我可以将“-ORDERID-”作为变量传递。

或者更好的是,SQL 文件就是这个“-SQL-”,我可以自己传递整个 SQL 字符串。谢谢!

4

2 回答 2

3

感谢 user357034 把我带到这里(我会“提高”你的答案,但我是新手,没有任何声誉)。我想发布我使用的代码,以防其他人遇到这种情况。如果您在这里看到任何看起来很傻的东西,也可以获得任何反馈。

首先,我像这样创建了一个 ASP 文件

Dim  orderid
Dim status
orderid = Request.QueryString("orderid")
status = Request.QueryString("status")
sql =   " update Orders " & _
        " set OrderStatus = '" + status + "' " & _
        " where Orderid in (" + orderid + ") " ; 

set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.OpenTextFile(Server.MapPath("./MY_FILE.sql"),2,true)
f.WriteLine(sql)
f.Close
set f=Nothing
set fs=Nothing

我将它上传到 Volusion 上的“通用”文件夹。

接下来,在 PHP 中,我调用这个文件,类似于这个...

 $asp =  file("http://MY_SITE/v/vspfiles/schema/generic/MY_FILE.asp?
         orderid=11,12&status=Processing");
 foreach ( $asp as $line )
 {
     echo ($line);
 }

注意:我已经将 XSD 文件通过 FTP 传输到同名的同一个文件夹,例如 MY_FILE.xsd。

最后,我对我的服务进行 Web 服务调用,就像这样......

   $url = "http://MY_SITE/net/WebService.aspx?
           Login=XXXX&EncryptedPassword=YYYYY&API_Name=Generic\MY_FILE"

效果很好。我进入 Volusion 管理网站,查看订单 11 和 12,它们已更新。我在 Volusion 中缺少 API 的几个领域使用这种方法。谢谢!

于 2015-05-07T14:37:05.337 回答
0

虽然从技术上讲,可以传递由完整 SQL 查询组成的文本,但我强烈警告不要这种做法,因为它会使您的网站面临恶意活动和/或可能的安全问题。我会将范围限制为特定查询,并且只允许使用一个或多个参数。

为此,您必须在 Volusion 中创建一个自定义 ASP 页面,该页面将从用户那里收集参数,在您的情况下为“订单 ID”,然后将它们插入到设置的 SQL 查询中,将该 SQL 查询作为文本文件写入服务器在正确的位置,如https://stackoverflow.com/a/29134928/357034所示,然后执行查询。所有这些都是在自定义 ASP 页面中完成的。

更新:如果您只想要一个简单的订单 ID 查询并返回所有字段,您甚至不必使用 SQL 方法,因为 Volusion 已经有一个内置方法来返回此数据。您只需使用自定义 ASP 页面插入订单 id 参数,然后执行带有附加参数的 URL。在您的 ASP 页面中,您将插入订单 ID 来代替 xxxxx

http://www.yoursiteurl.com/net/WebService.aspx?Login=name@yoursiteurl.com&EncryptedPassword=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxC&EDI_Name=Generic\Orders&SELECT_Columns=*&WHERE_Column=o.OrderID&WHERE_Value=xxxxx
于 2015-04-26T11:58:00.027 回答