ColdFusion의 cfqueryparam 태그는 값을 SQL 쿼리에 동적으로 바인딩하는 편리한 메커니즘을 제공합니다. 그러나 잘못 사용하면 빈 CFChart와 같은 예상치 못한 결과가 발생할 수 있습니다.
날짜 값으로 쿼리를 매개변수화하는 경우 올바른 값을 지정하는 것이 중요합니다. 매개변수에 대한 cfsqltype입니다. 이 경우에 설명된 것처럼 YEAR() 및 MONTH() 비교에 잘못된 cfsqltype(예: CF_SQL_TIMESTAMP)을 사용하면 쿼리 실행이 중단될 수 있습니다.
잘못된 코드:
<code class="coldfusion"><CFQUERYPARAM Value="#month#" cfsqltype="CF_SQL_TIMESTAMP"> <CFQUERYPARAM Value="#dateFormat(theMonth,"yyyy")#" cfsqltype="CF_SQL_TIMESTAMP"></code>
잘못된 cfsqltype을 사용하면 매개변수 값과 데이터베이스의 비교 열 간에 유형 불일치가 발생합니다. 예를 들어 YEAR()는 4자리 정수를 반환하는 반면 CF_SQL_TIMESTAMP는 전체 날짜/시간 개체를 나타냅니다. 이러한 불일치로 인해 잘못된 비교가 발생합니다.
<code class="text">2014 = {ts '2009-02-13 23:31:30'}</code>
기본 데이터베이스가 자동으로 매개변수 값을 숫자로 변환하여 잘못된 비교가 발생하고 쿼리에 대해 일치하는 레코드가 발견되지 않습니다.
문제를 해결하려면 매개변수에 적절한 cfsqltype을 지정하여 데이터 유형이 데이터베이스의 열 유형과 일치하는지 확인하십시오.
<code class="coldfusion"><CFQUERYPARAM Value="#month#" cfsqltype="CF_SQL_INTEGER"> <CFQUERYPARAM Value="#dateFormat(theMonth,"yyyy")#" cfsqltype="CF_SQL_INTEGER"></code>
대체 접근 방식 :
개별 날짜 구성 요소를 매개변수화하는 대신 더 나은 접근 방식은 cfsql_date를 cfsqltype으로 사용하여 날짜 비교를 사용하는 것입니다.
<code class="coldfusion"><CFQUERYPARAM Value="#dateFormat(theMonth,"yyyy-mm-dd")#" cfsqltype="CF_SQL_DATE"></code>
이 접근 방식은 인덱스 친화적이며 대상 열에 날짜 또는 날짜/시간 값이 포함되어 있는지 여부에 관계없이 정확한 비교를 보장합니다.
위 내용은 날짜 값이 포함된 매개변수화된 쿼리를 사용할 때 ColdFusion cfchart가 비어 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!