ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-Magento集成中PDO Firebird中的查询准备异常

2019-11-10 21:29:20  阅读:250  来源: 互联网

标签:magento prepared-statement firebird php pdo


我正在研究直接通过php firebird pdo扩展与客户的ERP *集成的项目,以获取品牌,类别,产品,产品价格等信息.

数据库不在运行脚本的服务器上.如果这很重要,则通过VPN连接可以连接数据库.

首先,脚本要求Firebird在一个名为SYS $ACTION_DS的系统表中查询几个查询,Firebird返回以下查询:

execute block (
    MARK_AS_PROCESSED DM_BOOL = :MARK_AS_PROCESSED,
    EXTENAL_SYSTEM_ID DM_123 = :EXTENAL_SYSTEM_ID)
returns (
    ID bigint,
    BRAND_NAME$1 DM_STR30,
    BRAND_NAME$2 DM_STR30,
    BRAND_PARENT_REF bigint,
    OP varchar(1))
as
DECLARE VARIABLE SL_ID BIGINT;
begin
  FOR SELECT SL.ID, SL.OPERATION, SL.TABLE_ID_REF, N.BRAND_NAME$1, N.BRAND_NAME$2, N.BRAND_PARENT_REF
      FROM  SYS$EXT_LOG SL
      LEFT JOIN NOM$BRANDS N ON (SL.TABLE_ID_REF = N.ID)
      WHERE (SL.PROCESSED = 0) AND (SL.EXTERNAL_SYSTEM_ID = :EXTENAL_SYSTEM_ID) AND (SL.TABLE_NAME = 'NOM$BRANDS')
      ORDER BY SL.ID
      INTO :SL_ID, :OP, :ID, :BRAND_NAME$1, :BRAND_NAME$2, :BRAND_PARENT_REF
  do begin
    suspend;
    if (MARK_AS_PROCESSED = 1) then
      update SYS$EXT_LOG SL set SL.PROCESSED = 1, SL.PROCESSED_ON = current_timestamp where SL.ID = :SL_ID;
  end
end

之后,该脚本尝试准备PDO语句,但准备抛出异常:Dynamic SQL Error SQL错误代码= -104令牌未知-第18行,第12列?

我找不到为什么会出现此错误,但是在实时服务器上一切正常,但在我的机器上却没有.我在我的机器上尝试了几种php版本(5.6、7.0、7.1),但没有任何效果,在实时服务器上php版本是5.5,但我找不到5.5和5.6之间与PDO或Firebird PDO相关的任何更改.

附加信息:
Firebird服务器版本:2.5.5.26

解决方法:

当前,PDO Firebird驱动程序通过用?替换:param来对命名参数进行简单的原始替换,因为FB不支持命名参数. PDO FB driver source中的更多信息

不幸的是,这不适用于“执行块”语句.我希望并做出一些努力以在将来解决此问题.在FB论坛,增加命名参数支持,PHP开发论坛和tracker改进驱动程序中对此进行了讨论.

目前,作为解决方法,您可以使用存储过程.

标签:magento,prepared-statement,firebird,php,pdo
来源: https://codeday.me/bug/20191110/2015033.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有