0

PHP を使用してデータを ASP DBA データベース ファイルに送信しています。本当の問題は、Request.QueryString('data')キャッシュのように新しいデータをループで使用するのではなく、データを追加するように見えることです。

コード(簡略化)

PHP 側: これは 5x のループで、ProductID は 001,002,003,004,005 になります

$fields = array(
            'OrdersID'  => $orderid, //001,002
            'productID' => $row2['orderprodid']
}

send_data($curl);

ASP側では:

Response.Write(Request.QueryString("OrdersID")&",")
Response.Write(Request.QueryString("productID"&"||"))

結果

ループ 1:

7777,001

ループ 2: (データの最初のビットがここにあるのはなぜですか?これは新しい CURL ストリームです。)

7777,001,7777,002

ループ 3:

404 - ファイルまたはディレクトリが見つかりません。

アップデート

これが私の出力データの例です。ご覧のとおり、データの 2 番目のループに追加のデータがあります。これが問題です。

データ文字列:

OrderID=99911250&OrderDate=2013-11-8+03%3A58%3A08+PM&LastName=Lanister&FirstName=J`amie&CompanyName=Lionsport&Email=guest%40user.com&ShipAddress=88+Richway&ShipCity=Casterly&ShipState=California&shipstatecode=California&ShipPostalCode=90210&ShipCountry=United+States&ShipCountryID=226&PhoneNumber=999-000-2342&ShipFax=&ShipContactFirstName=Jamie&ShipContactLastName=Lanister&ShipTaxid=&billcompanyname=Lionsport&billemail=&billaddress=&billcity=&billprovinceid=&billstate=&billstatecode=&billpostalcode=&billcountry=&billcountryid=00&billphonenumber=&billfax=&billcontactfirstname=&billcontactlastname=&billtaxid=&CardNumber=&CardType=&ExpMonth=&ExpYear=&CardVendor=Visa&securitycode=&Comments=&Subtotal=286.0000&Shipping=&Tax=&tax_rate=&pst=&pst_rate=&GrandTotal=286.0000&amount_owing=0&ShipWeight=0&blnShipping=0&Status=0&promo_code=none&promo_desc=none&promo_amount=0&POnumber=0&shipping_company=0&InvoiceNumber=0&DateInvoiced=0&ChequeNumber=0&DistributorOrder=0&blnAccepted=0&blnShipped=0&blnInvoiced=0&blnDelivered=0&blnArchived=1&blnSecondNotice=0&blnCancelled=0&shipping_instructions=0&trans_response_code=1&trans_response=0&trans_payment_url=0&discount_percent=&discount_amount=0&blnoldsystem=0&order_type=nonschedulea&userid=0000000&OrdersID=99942945&productID=2941&Quantity=1&quantity_shipped=1&quantity_shipped_current=0&Name=1&UnitPrice=1&SubTotal=1&Weight=1&blnAccepted=1&blnShipped=0&blnDelivered=0&shipping_company=ANDYSHIP&TrackingNumber=000000000&DateShipped=0&depotid=0&shippingid=0&shipping_sequence=0&carrier_companyid=0&assembly_trans_id=ANDY` 

応答

----------------LOOP 1----------------------------
999429452941
1
1
0
1
1
286.0000, 1
1
0, 1
0, 0
0, 0
0, ANDYSHIP
000000000
0
0
0
0
0
ANDY
------------------LOOP 2----------------------------
999429452941, 2940
1, 1  (SEE THE " ,1" - THIS SHOULD'NT BE HERE)
1, 1
0, 0
1, 1
1, 1
286.0000, 1, 1
1, 1
0, 1, 1
0, 0, 0
0, 0, 0
0, ANDYSHIP, ANDYSHIP
000000000, 000000000
0, 0
0, 0
0, 0
0, 0
0, 0
ANDYOrdersID=99942945, ANDY

だから問題は私のリクエストデータが「成長する」ことです

1

1,1

1,1,1

SOVLED。 私は愚かだ。各ループで同じ CURL データを送信していました。ループを修正したとき、あなたのソリューションは完璧に機能しました。ありがとうございました....!

4

1 に答える 1

1

Curl は配列の形式でデータを送信していますか? その場合、ASP Classic の値を配列として受け入れ、必要に応じて値を移動する必要がある場合があります。

値を NVP 形式で送信すると、ASP Classic でデータを処理する方が簡単になる場合があります。

orderid=7777,productid=001,productid=002,productid=002,productid=003

orderParams = SPLIT(orderParams,",")

IF isArray(orderParams) THEN
Redim Preserve arrOrderParams1(1,1)

For op1 = 0 to UBound(orderParams)
    'Loop through NVPs passed in as orderParams and their values "orderid=7777,productid=001,productid=002,productid=002,productid=003"

    'Split individual NVPs into multi-dimensional array
    arrOrderParams2 = Split(orderParams(op1),"=")
    'productid,001

    IF op1 > 0 THEN
        Redim Preserve arrOrderParams1(1,op1+1)
    END IF

    For op2 = 0 to UBound(arrOrderParams2)
        IF op2 = 0 THEN
            arrOrderParams1(0,op1) = arrOrderParams2(op2)
        ELSE
            arrOrderParams1(1,op1) = arrOrderParams2(op2)
        END IF
    Next

    IF isNumeric(arrOrderParams1(1,op1)) THEN
        ' Do something with the values
        response.write arrOrderParams1(0,op1) & "<Br/>"
        response.write arrOrderParams1(1,op1) & "<Br/>"
    END IF
Next
ELSE
IF orderParams <> "" AND Instr(orderParams,"=") THEN
    Redim Preserve arrOrderParams1(1,1)

    'Split individual NVPs into multi-dimensional array
    arrOrderParams2 = Split(orderParams,"=")
    'productid,001

    IF op1 > 0 THEN
        Redim Preserve arrOrderParams1(1,op1+1)
    END IF

    For op2 = 0 to UBound(arrOrderParams2)
        IF op2 = 0 THEN
            arrOrderParams1(0,op1) = arrOrderParams2(op2)
        ELSE
            arrOrderParams1(1,op1) = arrOrderParams2(op2)
        END IF
    Next
    For op1 = 0 to UBound(orderParams)
        ' Do something with the values
        response.write arrOrderParams1(0,op1) & "<Br/>"
        response.write arrOrderParams1(1,op1) & "<Br/>"
    Next
END IF
END IF
于 2013-11-08T13:29:46.180 に答える