2016-08-16 2 views
-1

식별자가 내 변수와 일치하는 행을 선택해야합니다. 내 변수 값이 "myvariable"이라고 가정 해 봅시다 (물론 uniqueidentifier 형식으로).cfquery에서 "uniqueidentifier"유형 선택

<cfquery name="findUser" datasource="#SOURCE#"> 
    SELECT 
     db.[User].UserID 
    FROM 
     db.[User] 
    WHERE 
     db.[User].UserID = "#current_user_id#"; 
</cfquery> 

그것은 다음과 같은 오류를 반환합니다 :

[Macromedia][SQLServer JDBC Driver][SQLServer]Invalid column name 'myvariable'.

데이터를 쿼리 괜찮

<cfset current_user_id = "myvariable"> 

여기 내 "올 cfquery"내용입니다. SELECT *의 cfdump는 모든 행을 반환하지만 WHERE 절을 추가하면 오류가 발생합니다. 쿼리는 WHERE 절이 있어도 ColdFusion 외부에서 올바르게 작동합니다.

내가이 추가 시도하지만 그것이 작동 중 하나를하지 않습니다

<cfqueryparam value = "#current_user_id#" cfsqltype="cf_sql_idstamp"> 

내가 조건은 "고유 식별자"유형을 선택에 대해 알아야 할 뭔가가 있나요? 어쩌면 내 변수의 유형을 어떻게 "uniqueidentifier"로 설정해야할까요?

CF 버전 10,0

미리 감사드립니다.

+5

값에 큰 따옴표가 아닌 작은 따옴표를 사용하려면 첫 번째 값이 실패합니다. 그래서''# current_user_id # ''. cfqueryparam이 정상적으로 보입니다. 동일한 오류 또는 다른 오류가 발생합니까? 또한 어떤 CF 버전을 사용하고 있습니까? 9, 10 및 11 태그를 추가했습니다. –

+0

큰 따옴표를 작은 따옴표로 변경 했으므로 작동했습니다. 고맙습니다! –

+0

쿼리 매개 변수의 경우 데이터 형식을 varchar로 변경해보십시오. –

답변

0

예 :이 CFLIB.ORG CreateGUID() 함수로부터의 UUID MSSQL 호환 버전을 사용

<cfqueryparam cfsqltype="cf_sql_varchar" value="1890958b-dec9-0dfc-c372-306a897693ea" /> 

참고.

0

Tried adding [cfqueryparam] but it doesn't work either:

방법를 작동하지 않습니다? 기본적으로 uniqueidentifierfixed length string으로 처리됩니다. 만큼 당신이 올바른 값을 제공으로, 문자에 사용되는 기본 유형 중 하나는 괜찮 : CF_SQL_CHAR

  • CF_SQL_VARCHAR
  • CF_SQL_IDSTAMP

    • (단지 CF_SQL_CHAR 동의어)

    의 모든 이러한 유형은 ColdFusion 10/11 및 SQL Server 2008에서 제대로 작동합니다. 따라서 문제는 데이터 또는 코드의 차이 때문일 수 있습니다.

    DDL :

    CREATE TABLE TestTable (UserID UNIQUEIDENTIFIER, UserName VARCHAR(100)); 
    

    코드 :

    <cfset current_user_id = "6F9619FF-8B86-D011-B42D-00C04FC964FF"> 
    
    <!--- 1: CF_SQL_IDSTAMP ---> 
    <cfquery name="qTest"> 
        SELECT UserID 
        FROM TestTable 
        WHERE UserID = <cfqueryparam value = "#current_user_id#" cfsqltype="cf_sql_idstamp"> 
    </cfquery> 
    
    <!--- 2: CF_SQL_CHAR ---> 
    <cfquery name="qTest"> 
        SELECT UserID, UserName 
        FROM TestTable 
        WHERE UserID = <cfqueryparam value = "#current_user_id#" cfsqltype="cf_sql_char"> 
    </cfquery> 
    
    <!--- 3: CF_SQL_VARCHAR ---> 
    <cfquery name="qTest"> 
        SELECT UserID, UserName 
        FROM TestTable 
        WHERE UserID = <cfqueryparam value = "#current_user_id#" cfsqltype="cf_sql_varchar"> 
    </cfquery> 
    

    changed double quotes to single quotes and it worked

    기술적으로 따옴표를 사용할 수 있지만 -하지 않습니다. CFQueryparam은 많은 이점을 제공합니다. 예를 들어 더 이상 문자열 인용에 대해 걱정할 필요가 없습니다 .- SQL 주입 보호, 데이터 유형 검사, 향상된 쿼리 성능 등을 언급 할 필요가 없습니다.

  • 관련 문제