2

p1、p2、p3 などと呼ばれるデータベースにいくつかのフィールドがあり、それらは GetUser と呼ばれるクエリによって返されます。それらの値を確認したいのですが、次のコードでエラーが発生します。「GetUser.p#x#」の書式設定が間違っていることは確かですが、その方法がわかりません。どんな助けでも大歓迎です。

私は動作する次のコードを持っています...

    <cfquery name="GetUser"> 
        SELECT id, p00, p01, p02, p03, p04, p05, p06
        FROM users 
        where id = #session.user_id#
    </cfquery>

    <cfoutput query="GetUser">
        <cfif p01 is 1><li>Post 01</li></cfif>
        <cfif p02 is 1><li>Post 02</li></cfif>
        <cfif p03 is 1><li>Post 03</li></cfif>
        <cfif p04 is 1><li>Post 04</li></cfif>
        <cfif p05 is 1><li>Post 05</li></cfif>
        <cfif p06 is 1><li>Post 06</li></cfif>
    </cfoutput>

当然、これはこれを行うにはひどい方法なので、同じ結果を得るために次のようなループを実行したかったのです。

    <cfloop index = "x" from = "1" to = "6"> 
        <cfif GetUser.p0#x# is 1><li>Post #x#</li></cfif>
    </cfloop>

これはエラーになります。だから私はこれを達成する方法を理解しようとしています。

// queryName["columnName"][rowNumber] が必要であることを示唆する同様の質問があります。これは異なり、より単純です。

4

2 に答える 2

0

明確にするために編集:

<cfquery name="getuser"  datasource="STACK">
    Select * from stackoverflow
</cfquery>

<cfset fieldNumber = #ListLen(getuser.ColumnList)#>
<cfoutput>
<cfloop index="i" from="1" to="#fieldNumber#"> 
This is P#i#
</cfloop>
</cfoutput>

あなたのコメントから、あなたが返す列に基づいて条件付きチェックが必要なようです。列に一貫した名前が付けられていると仮定すると、返される列は常にループの反復と一致する必要があります。必要な数のフィールドをループするだけでよく、この方法では、10 などをハードコードする必要なく、常に正確に実行されます。

したがって、値が p1 または p2 であるかどうかを確認する代わりに、次のように使用できます#i#

<cfif i is 1> P1 is here. </cfif>

于 2016-07-24T06:23:34.613 に答える