【问题标题】:What is causing PDOStatement::execute(): SQLSTATE[HY000]: General error: 1722 OCIStmtExecute: ORA-01722: invalid number?是什么导致 PDOStatement::execute(): SQLSTATE[HY000]: 一般错误: 1722 OCIStmtExecute: ORA-01722: 无效号码?
【发布时间】:2015-10-30 15:34:48
【问题描述】:

已修复,请看我的回答。

我有一个 PHP 脚本,它生成动态 SQL 语句并以 DataTables 接受的格式返回结果。

然而,今天早上我添加了一些破坏脚本的有效日期检查。

PHP报错显示:

警告:PDOStatement::execute():SQLSTATE[HY000]:常规 错误:1722 OCIStmtExecute:ORA-01722:无效号码

我以前从未见过此错误消息。我将生成的 SQL 语句粘贴到 SQL 语法检查器中,确认它是有效的,那么我做错了什么?

【问题讨论】:

    标签: php sql oracle pdo


    【解决方案1】:

    这意味着 auf_kopf.erfass_dat 列中的日期无效。该列的数据类型是什么?

    【讨论】:

      【解决方案2】:

      原来我用错了TO_CHAR。

      我应该在现有列上使用它来转换该日期以匹配用户输入,而不是使用它来转换用户输入以匹配日期列。

      我在做

      select c1 from t1 where e1 between to_char(?,'YYYY-MM-DD') and to_char(?,'YYYY-MM-DD')
      

      应该做的

      select c1 from t1 where to_char(e1, 'YYYY-MM-DD') between '?' and '?'
      

      【讨论】:

        【解决方案3】:

        很有可能 auf_kopf.kunr = '63' 是错误的。 auf_kopf.kunr 一个数字?如果是,则使用直 63

        【讨论】:

          猜你喜欢
          • 2015-04-09
          • 2014-07-21
          • 1970-01-01
          • 1970-01-01
          • 2018-02-14
          • 2012-04-29
          • 1970-01-01
          • 2012-09-14
          相关资源
          最近更新 更多