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 の "generic" フォルダに FTP で転送しました。

次に、PHP で、このファイルを次のように呼び出します...

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

注: MY_FILE.xsd のように、XSD ファイルを同じ名前の同じフォルダーに既に FTP 送信しました。

そして最後に、次のように、自分のサービスに対して Web サービス呼び出しを行います...

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

よく働く。Volusion 管理サイトにアクセスし、注文 11 と 12 を確認すると、更新されていました。APIが不足しているVolusionのいくつかの領域でこのメソッドを使用しています。ありがとう!

于 2015-05-07T14:37:05.337 に答える
0

技術的には、完全な SQL クエリで構成されるテキストを渡すこともできますが、サイトを悪意のあるアクティビティやセキュリティ上の問題にさらす可能性があるため、そのような行為には強く注意してください。スコープを特定のクエリに限定し、1 つ以上のパラメーターのみを使用できるようにします。

これを達成するには、Volusion でカスタム ASP ページを作成して、ユーザーからパラメーターを収集する必要があります。この場合、「注文 ID」で、それらを設定された SQL クエリに挿入し、その SQL クエリをテキスト ファイルとしてサーバーに書き込みます。https://stackoverflow.com/a/29134928/357034に示されている正しい場所で、クエリを実行します。これはすべて、カスタム ASP ページで行われます。

更新: すべてのフィールドが返される単純な注文 ID クエリが必要な場合は、SQL メソッドを使用する必要さえありません。Volusion には、このデータを返すメソッドが既に組み込まれているためです。カスタム ASP ページを使用して order id パラメータを挿入し、パラメータが付加された URL を実行するだけです。ASP ページで、xxxxx の代わりに注文 ID を挿入します。

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 に答える