PHP-ORA-01747:无效的user.table.column、table.column或列规范



我正试图在oracle数据库中更新一个名为RAC_PV的表,但当我运行应用程序时,查询返回了该错误。我认为一切都是正确的,因为我在sqldeveloper上运行相同的查询(但使用手动值(,当我将变量$prec_medio更改为1这样的数字时,它在应用程序上起作用。这是我的代码:

$preco_medio = number_format(($v_interna_real / $encargo + $vipe_real) / $v_interna_t + $vipe_t , 2, ",", ".") ;
sc_exec_sql("update RAC_PV set PRECO_MEDIO = $preco_medio where rac_anopv = {ano} and rac_mespv = {mes} and codempresa = $id_empresa and codpainel = 6 and cod_prod1 = '$id_produto'");

我的表名和列名是正确的并经过检查,我的变量,如{ano}、{mes}、$id_produto和$prec_medio都被正确设置。此sc_exec_sql("在此处查询"(运行良好。也许问题出在$prec_medio?我从来没有用过那个number_format,但当一个回声出现时,数字会显示在我面前,比如3123.03。

有人能帮我吗?

3,123.03

这不是数字文字,而是两个数字,3123.03,其中一个显然被解释为列名。删除数字文字表达式中的分组,,或者使用TO_NUMBER()和带格式化数字表示的字符串文字。

然而,最好的方法不是通过字符串串联来构建查询,而是通过参数化查询来构建查询。字符串串联容易出现SQL注入。此外,参数化查询(通常和大多数情况下(会自动找到DBMS的正确表示,从而避免了您在这里遇到的此类问题。

最新更新