使用PHP时,没有从firebird数据库接收正确的数据
发布时间:2020-12-13 16:58:38 所属栏目:PHP教程 来源:网络整理
导读:我有一些非常奇怪的情况.我正在对firebird数据库进行查询,并且与 PHP中的结果不匹配.在DB中,结果很好,但是当涉及到PHP时,会有不同的值. 查询: SELECT LIST(t."ID",',') ID,t."Date",LIST(n."Name",') Name FROM "Tests" t LEFT JOIN "Names of tests" n ON
我有一些非常奇怪的情况.我正在对firebird数据库进行查询,并且与
PHP中的结果不匹配.在DB中,结果很好,但是当涉及到PHP时,会有不同的值.
查询: SELECT LIST(t."ID",',') ID,t."Date",LIST(n."Name",') Name FROM "Tests" t LEFT JOIN "Names of tests" n ON t."Name ID" = n."ID" WHERE t."Locked" = 0 GROUP BY t."Date" ORDER BY t."Date" DESC DB中的结果: ID = 546,552日期= 23.10.2015姓名=Математика(тест),География(тест) PHP中的结果:
当使用ibase_connect()连接到DB时,我使用“UTF-8”编码,数据库编码为WIN1251. 解决方法
结果类型
LIST() 是blob,而不是CHAR或VARCHAR.我自己不使用PHP,但我相信PHP的Firebird / Interbase驱动程序要求您明确请求blob.
您在ID和Name中看到的值是可用于请求blob的blob id. 您有两种选择: >使用这些blob id请求blob值,请参阅 第二个选项的缺点是,如果你可以有很长的结果,那么你还需要转换为长VARCHAR,否则会出现截断错误;不幸的是,varchars限制为32K-2字节(UTF8为8191个字符),整行为64K字节. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |