我发现这个回复很有帮助
How to write join query in Volusion API
我正在寻找的是一种将我自己的.SQL和.XSD文件添加到/ vspfiles / schema / Generic文件夹并能够将参数传递给它的方法。有谁知道这是否可能。
SQL的一个非常基本的例子就是这样......
从订单中选择*,其中order_id =“ - ORERID - ”
...我可以将“-ORDERID-”作为变量传递。
甚至更好的SQL文件就是这个“-SQL-”,我可以自己传递整个SQL字符串。谢谢!
答案 0 :(得分:3)
感谢用户357034让我来到这里(我已经“回答”你的答案,但我是新人,没有任何声誉)。我想发布我用过的代码,以防其他人遇到这个问题。如果你看到任何看起来很傻的东西,也可以得到任何反馈。
首先,我创建了一个像这样的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
我将其FTP到Volusion上的“generic”文件夹。
接下来,在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。
最后,我打电话给我的服务,就像这样......
$url = "http://MY_SITE/net/WebService.aspx?
Login=XXXX&EncryptedPassword=YYYYY&API_Name=Generic\MY_FILE"
效果很好。我进入Volusion管理站点,查看订单11和12,它们已更新。我在Volusion中缺少API的几个区域使用这种方法。谢谢!
答案 1 :(得分:0)
虽然从技术上讲,人们可以传递由完整SQL查询组成的文本,但是我会强烈反对这种做法,因为它会打开您的网站以防止恶意活动和/或可能出现的安全问题。我会将范围限制为特定查询,并且只允许使用一个或多个参数。
要实现这一点,您必须在Volusion中创建一个自定义ASP页面,该页面将收集用户的参数,在您的情况下"订单ID"然后将它们插入到set 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