Teg cfqueryparam ColdFusion menyediakan mekanisme yang mudah untuk mengikat nilai secara dinamik pada pertanyaan SQL. Walau bagaimanapun, penggunaan yang tidak betul boleh membawa kepada hasil yang tidak dijangka, seperti CFCharts kosong.
Apabila membuat parameter pertanyaan dengan nilai tarikh, adalah penting untuk menentukan yang betul cfsqltype untuk parameter. Seperti yang ditunjukkan dalam kes ini, menggunakan cfsqltype yang salah (cth., CF_SQL_TIMESTAMP) untuk perbandingan YEAR() dan MONTH() boleh mengganggu pelaksanaan pertanyaan.
Kod Salah:
<code class="coldfusion"><CFQUERYPARAM Value="#month#" cfsqltype="CF_SQL_TIMESTAMP"> <CFQUERYPARAM Value="#dateFormat(theMonth,"yyyy")#" cfsqltype="CF_SQL_TIMESTAMP"></code>
Menggunakan cfsqltype yang salah memperkenalkan ketidakpadanan jenis antara nilai parameter dan lajur perbandingan dalam pangkalan data. Sebagai contoh, YEAR() mengembalikan integer empat digit, manakala CF_SQL_TIMESTAMP mewakili objek tarikh/masa penuh. Ketidakpadanan ini mengakibatkan perbandingan yang salah:
<code class="text">2014 = {ts '2009-02-13 23:31:30'}</code>
Pangkalan data asas menukar nilai parameter kepada nombor secara automatik, membawa kepada perbandingan palsu dan tiada rekod sepadan ditemui untuk pertanyaan.
Untuk menyelesaikan isu, nyatakan cfsqltype yang sesuai untuk parameter, memastikan bahawa jenis data sepadan dengan jenis lajur dalam pangkalan data:
<code class="coldfusion"><CFQUERYPARAM Value="#month#" cfsqltype="CF_SQL_INTEGER"> <CFQUERYPARAM Value="#dateFormat(theMonth,"yyyy")#" cfsqltype="CF_SQL_INTEGER"></code>
Pendekatan Alternatif :
Sebagai alternatif kepada parametrik komponen tarikh individu, pendekatan yang lebih baik adalah menggunakan perbandingan tarikh dengan cf_sql_date sebagai cfsqltype:
<code class="coldfusion"><CFQUERYPARAM Value="#dateFormat(theMonth,"yyyy-mm-dd")#" cfsqltype="CF_SQL_DATE"></code>
Pendekatan ini lebih mesra indeks dan memastikan perbandingan yang tepat tanpa mengira sama ada lajur sasaran mengandungi tarikh atau nilai tarikh/masa.
Atas ialah kandungan terperinci Mengapakah cfcharts ColdFusion saya kosong apabila menggunakan pertanyaan berparameter dengan nilai tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!