一、前言
使用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');
}
就是这么简单,哈哈 搞了一下午终于让我找到办法了,快夸我~~~