Volusion的通用SQL文件夹,功能

时间:2015-04-24 13:49:01

标签: sql api volusion

我发现这个回复很有帮助

How to write join query in Volusion API

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

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

从订单中选择*,其中order_id =“ - ORERID - ”

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

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

2 个答案:

答案 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