1

わかりました、私はフォーラムに不慣れで、コーディングにかなり慣れていません。高低を検索しました。vbscript で特殊文字を使用するにはエスケープまたは Chr() が必要であることを理解しています。次のコードでは、"doc_no" の後に '%' を連結して、テーブルに表示する必要があるドキュメント番号のリストを取得するための sybase データベースのワイルドカードとして使用する必要があります。
私が試してみました

' " & doc_no " ' & Chr(37) "  'this returned that  "&" is an invalid character
' " & doc_no " ' || Chr(37) "
' " & doc_no " ' + ""%"" "   returned + as an invalid character

各タイプのいくつかのバリエーションを試しましたが、オンラインで同様の状況を見つけることはできません. 何かアドバイス?繰り返しますが、私はプログラミングの人生を始めてまだ 4 か月しか経っていません。以下は、上記の元となったコードのスニペットです。

<%
Dim document(1024)  
counter = 0 
    cmdString = ""
    cmdString = cmdString & "SELECT dbo.dsk_obj.obj_id,"
    cmdString = cmdString & "   docno = dbo.dsk_obj.obj_usr_num "
    cmdString = cmdString & "FROM   dbo.dsk_obj "
    cmdString = cmdString & "WHERE  dbo.dsk_obj.obj_usr_num LIKE '" & doc_no & "'  I NEED TO CONCAT. % HERE "
      objRS.Open    cmdString, objConn, adOpenStatic, 3, adCmdText
       WHILE (objRS.EOF = False) 
       document(counter) = objRS("docno")
       counter = counter + 1
      objRS.MoveNext
        WEND
      objRS.Close
%>

<% FOR ii = 0 TO counter -1 %>
     <%=document(ii)%>
<% 
NEXT
%>

出力は次のようになります

1555307375-0001
1555307375-0002
1555307375-0003

どんな助けでも大歓迎です!ありがとう!ジェレミー

4

1 に答える 1

1

まず、SQL インジェクションのために文字列の連結を避ける必要があります。

ここで実行しようとしているのは、VBScript で SQL 文字列を作成することです。必要な SQL は次のようになります。

LIKE '123%'

これを作成するには、次のような VBScript の文字列が必要です。

Dim string = "LIKE '123%'"

ドキュメント番号を変更する123には、次のようにします。

Dim string = "LIKE '" & doc_no & "123%'"

あなたの場合、それは次のようになります。

cmdString = cmdString & "WHERE  dbo.dsk_obj.obj_usr_num LIKE '" & doc_no & "%'"

しかし、これをしないでください。文字列連結を使用する代わりに、パラメーターを渡す必要があります。

于 2013-10-16T23:50:48.980 に答える