だから私は頭痛の種になるこの問題を抱えています。誰かが私がこれを解決するのを手伝ってくれるなら感謝します。
MySQL と一緒に MSSQL と Coldfusion を使用しています。MSSQL データベースは、私が現在取り組んでいるこのアプリケーションの主要なデータソースです。従業員のデータベースにはMySQLを使用しています(PHPで従業員のデータベースを開発するために作成されました)。このアプリケーションを機能させるには、それに接続する必要があります。
MySQL テーブル:
TBL_EMPLOYEE
+---------+------------------+-------------------|
|EMP_ID | EMP_NUMBER | DATE_OF_BIRTH |
+---------+------------------+-------------------|
| 1 | 00001 | 2009-01-01 |
| 2 | 00002 | 2009-01-15 |
| 3 | TEMP01 | 2009-05-10 |
| 4 | TEMP02 | 2010-02-04 |
| 5 | 0006 | 2010-03-01 |
+---------+------------------+-------------------|
TBL_CHILD
+---------+------------------+---------------------|
|EMP_ID | CHILD_ID | DATE_OF_BIRTH |
+---------+------------------+---------------------|
| 1 | 1 | 2008-11-12 |
| 1 | 2 | 2010-10-06 |
| 2 | 3 | 2009-05-10 |
| 5 | 4 | 2010-02-16 |
| 5 | 5 | 2012-03-08 |
+---------+------------------+---------------------|
このアプリケーションは、スタッフの生年月日をチェックします。彼に子供がいる場合、システムは長男の生年月日を表示します。それ以外の場合 (子供がいない場合)、システムは彼自身の生年月日を表示します。
問題は次のとおりです。
<cfquery name="getEmployee" datasource="#mysqlDB#">
SELECT EMP_ID,EMP_NUMBER,DATE_OF_BIRTH
FROM TBL_EMPLOYEE
WHERE EMP_NUMBER = '#users.EMP_NO[mainRow]#'
</cfquery>
<cfset mysql_id = getEmployee.EMP_ID>
<cfquery name="getChild" datasource="#mysqlDB#">
SELECT *
FROM TBL_CHILD
WHERE EMP_ID =#mysql_id#
ORDER BY DATE_OF_BIRTH ASC
LIMIT 1
</cfquery>
Note :
#users.EMP_NO[mainRow]# --> loop query from MSSQL
EMP_NUMBER = string
EMP_ID = integer (auto)
このクエリは、従業員番号が数字 (つまり、001、101、23002 など) の場合に機能します (「」記号なし)。
<cfquery name="getEmployee" datasource="#mysqlDB#">
SELECT *
FROM TBL_EMPLOYEE
WHERE EMP_NUMBER = #users.EMP_NO[mainRow]#
</cfquery>
<cfset mysql_id = getEmployee.EMP_ID>
<cfquery name="getChild" datasource="#mysqlDB#">
SELECT *
FROM TBL_CHILD
WHERE EMP_ID =#mysql_id#
</cfquery>
しかし、従業員番号が文字(TEMP101、TEMP007など)の場合、エラーが発生します。
'#users.EMP_NO[mainRow]#'
phpmyadmin で同じクエリを使用しようとしましたが、問題なく動作します。なぜこれが起こっているのか、これを解決する方法を教えてもらえますか?
(コメントからの更新) エラーメッセージは次のとおりです。
データベース クエリの実行中にエラーが発生しました。SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 near '' at line 3 SELECT * FROM TBL_CHILD WHERE EMP_ID =