【问题标题】:Oracle/PHP - ORA-00911 invalid character on UPDATEOracle/PHP - ORA-00911 UPDATE 上的无效字符
【发布时间】:2011-04-01 05:38:59
【问题描述】:

我正在运行一个从 Oracle 数据库实例更新表的 PHP 脚本。

首先,我收到一个带有 JSON 的对象:

[{
  "lot": "KLMHA17N9N00",
  "requestor": "B10078",
  "id": "FRESHLOT",
  "username": "B26696",
  "password": "B26696"
}, {
  "lot": "KLMHA17R1800",
  "requestor": "B10078",
  "id": "FRESHLOT"
}]

(已知这个 JSON 没有问题,因为我在其他项目中一直在使用它。)

然后,我将结果解析到 $rmrid 对象后创建查询:

$db_query = "update ao_lots 
                 set RMRID='".$rmrid->requestor."-".$rmrid->id."' 
               where ALOT_NUMBER='".$rmrid->lot."';";

如果我回显查询,我会得到:

update ao_lots 
   set RMRID='B10078-FRESHLOT' 
 where ALOT_NUMBER='KLMHA17N9N00';

我在这里没有看到任何问题,但是当我执行查询时,我收到了这个警告并且没有任何更新:

警告:oci_execute() [function.oci-execute]:ORA-00911:无效字符

我对该错误代码进行了一些搜索,但无法用找到的信息修复它。

任何建议将不胜感激。

【问题讨论】:

  • 请用DESCRIBE AO_LOTS的输出更新问题
  • 如果您可以尝试运行从 SQL*Plus 生成的 sql 并查看是否有相同的错误,这也会有所帮助。如果没有语句错误,您可以回滚更新。
  • 我在 SQL*Plus 上运行了该语句,它运行没有问题,我很久以前就这样做了,但我现在想自动化这个过程

标签: php oracle json ora-00911


【解决方案1】:

SQL 语句末尾不需要分号。

它被 SQL*Plus 和大多数其他工具用来表示“我已经写完了语句,现在去执行它”

【讨论】:

  • 这解决了问题,我以为我试过了,谢谢!
猜你喜欢
  • 2017-06-10
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多