PHP/SQL/DB2 where 子句中的特殊字符
我正在尝试使用 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 资源。
如果我更改上面的 where
的 SQL 语句以从不同的字段中选择一个值,我的 html 就会正确呈现。
你能想到我能完成这个任务吗?
史蒂文
I am trying to SQL a DB2 database (on an iSeries) using PHP and "DB2_exec"- not mysql.
I have these characters in my WHERE
clause (variable $EncSSN
) which cause the SQL statement to stop: ðIn*Éæng
“"Ò×ÑRÈ•`
The SQL is constructed as:
select EENUM, EESSN
from EEMAST
where EESSN = '$EncSSN'
The field in the table EESSN contains encrypted values.
- I get no errors and no log entries. The html renders a blank page.
- I have tried replacing (str_replace) quotes, single quotes, period, etc with escape character '\'
- I can't use mysql_real_escape_string because I am loading the db2_connect resource.
If I change the SQL statement above's where
to select a value from a different field, my html is rendered properly.
Can you think of anyway I can accomplish this?
Steven
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
准备 SQL 并使用数组方法设置 where 子句的参数。切勿尝试通过字符串函数构建 SQL 查询。
Prepare the SQL and set the parameter for where clause using the array approach. Never ever attempt to build SQL queries by string functions.
尝试使用
addslashes()
函数 http://php.net/ Manual/en/function.addslashes.php或
heredoc
或nowdoc
语法http://php.net/manual/en/language.types.string.php
您也可以将 sql 放入存储过程中,但参数值可能会遇到相同的问题,需要尝试上述方法之一。
try the
addslashes()
function http://php.net/manual/en/function.addslashes.phpor
heredoc
ornowdoc
syntaxhttp://php.net/manual/en/language.types.string.php
you could also put the sql in a stored proc, but you may have the same issues for the parameter value and need to try one of the above.