【发布时间】:2011-10-19 15:39:36
【问题描述】:
我正在尝试使用 PHP 和“DB2_exec”而不是 mysql 对 DB2 数据库(在 iSeries 上)进行 SQL。
我的WHERE 子句(变量$EncSSN)中有这些字符导致SQL 语句停止:ðIn*Éæng“”Ò×ÑRÈ•`
SQL 构造如下:
select EENUM, EESSN
from EEMAST
where EESSN = '$EncSSN'
表 EESSN 中的字段包含加密值。 - 我没有错误,也没有日志条目。 html 呈现一个空白页面。 - 我尝试用转义字符 '\' 替换 (str_replace) 引号、单引号、句点等 - 我无法使用 mysql_real_escape_string,因为我正在加载 db2_connect 资源。
如果我更改上面的 SQL 语句 where 以从不同的字段中选择一个值,我的 html 会正确呈现。
你能想到我能做到这一点吗?
史蒂文
【问题讨论】:
-
在您进一步查看之前 - 您确定您的数据库已设置为处理这些字符吗?大多数旧表使用 EBCDIC 编码,该编码具有受限字符集。
-
数据库当前包含数千条记录,其中包含 EESSN 列中的加密值。我正在尝试使用加密列作为密钥检索记录
-
行之有效的语句是什么样的? 唯一是您更改了字段引用吗?
-
没错,另一条语句是这样的:select EENUM, EESSN,EEAN8 from EEMAST where EEAN8 = 12345 这显示了SSN记录应该显示的记录。我感谢你试图帮助我。我对这项任务感到沮丧
-
除了您刚刚更改了传递给 DB2 的数据,以及用于比较的字段。如果您使用相同的加密数据指定
EEAN8字段会发生什么?你得到一个空白页面,还是得到一个空的结果集(假设它们不同)?此外,检查您的 DB2 连接是否包含错误处理能力,并查看可以为您提供哪些信息。