所以我有这个让我头疼的问题。如果有人能帮我解决这个问题,我将不胜感激。
我将 Coldfusion 与 MSSQL 和 MySQL 一起使用。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 服务器版本相对应的手册,以在第 3 行的 '' 附近使用正确的语法 SELECT * FROM TBL_CHILD WHERE EMP_ID =