使用php对oracle数据库进行增删改等数据操作时报SQLSTATE[HY000]: General error: 936 OCIStmtExecute: ORA-00936: 缺失表达式 错误

一、前言

使用thrinkphp6.0框架为Oracle数据库表添加一条数据时报错:

oracle数据是插入成功了, 我们看错误语句可以发现,php在向oracle数据库插入数据后调用了ext\pdo_oci.dll 下的getLastInsID()函数,这个函数可以从解释中查看是为了获取最近插入的ID,

因为php是基于mysql数据库进行查询的,mysql数据库建表一般都是需要一个主键(id)的,所以php对数据库数据进行操作后要调用这个主键id,就会执行getLastInsID()函数,但是oracle数据库没有在建表中添加主键(id)的规定,所以oracle执行到这里就会报错,因为它找不到嘛.

二、如何解决呢?

网上找了好多办法,在我踩的第一个坑之后明白了报错原因,但是并不知道如何修改,因为方法是封装在pph的dll中没办法改,改tp6的框架文件,结果遇到了另一个问题让我花了一上午时间解决新问题,下午找了好多,总算是解决了,下面是解决办法

使用原生方式进行数据库的修改,怎么写呢?,看下面(超简单~~)

            $dns = "oci:dbname=10.25.4.242/QZ3DSYSTEM;charset=UTF8";//连接字符串
            $username = "maximo"; //这是数据库用户名
            $password = "maximo"; //这是数据库连接密码
            $conn = new PDO($dns,$username,$password); //创建连接

            $sql ="insert into FLOOD_FILE(FILE_NAME,FILE_PATH11,FILE_TYPE) values('6','26','2333')";//sql语句注意 oracle数据库会将字段自动修改成大写

            $rest= $conn->query($sql,PDO::FETCH_ASSOC);
            if ($rest==false)
            {
                return json('false');
            }

 就是这么简单,哈哈 搞了一下午终于让我找到办法了,快夸我~~~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值