在 DB2 SQL 和 PHP 中使用文字时返回的垃圾字符

Posted

技术标签:

【中文标题】在 DB2 SQL 和 PHP 中使用文字时返回的垃圾字符【英文标题】:Garbage characters returned when using literals with DB2 SQL and PHP 【发布时间】:2011-06-22 14:26:18 【问题描述】:

语句与此类似——

$sql = "SELECT foo1, foo2, foo3, fooDate1, fooDate2, 'Open' FROM some.table";

然后我回到 html

1   801566  11451   06/21/2011  06/22/2011  ����

我认为这与字符编码有关?

编辑:

我在 Zend 论坛上找到了解决方案。

"2. 将以下行添加到 Apache 配置文件 /www/zendsvr/con/httpd.conf : 默认FsCCSID 37"

来源: http://forums.zend.com/viewtopic.php?f=77&t=8154&p=28348&hilit=db2+ascii#p28348

【问题讨论】:

尝试 "SELECT foo1, foo2, foo3, fooDate1, fooDate2, 'Open' FROM some.'table'";不确定,但可能会保留桌子。 @Headspin:这不是问题,因为查询正在返回一个结果集。这是一个字符编码问题。 【参考方案1】:

尝试使用双引号:

$sql = "SELECT foo1, foo2, foo3, fooDate1, fooDate2, \"Open\" FROM some.table";

【讨论】:

收到此错误:42703:未找到列或全局变量打开。 SQLCODE=-206 DB2 对字符串文字使用单引号。双引号会使其将其视为列名。

以上是关于在 DB2 SQL 和 PHP 中使用文字时返回的垃圾字符的主要内容,如果未能解决你的问题,请参考以下文章

对 DB2 for z/OS 的存储过程调用中不支持字符串文字

尝试启动 DB2 实例时出错。返回代码为2 , SQL消息 为: PROCESS_ERROR

DB2 和 SQL-如何在特定字段中返回最大值,以便每行只显示一条记录;从多个表中提取数据

[DB2 for i5/OS]SQL0104 - 令牌?无效。有效标记:) ,., SQL 状态 37000

您可以在 DB2 SQL 中订购 listagg 返回值吗?

使用 SQL 和 DB2 for i 进行日期算术