oracle odbc_execute():提供的资源不是使用PHP的有效ODBC结果资源

bxpogfeg  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(102)

我正在尝试使用PHP连接到Oracle数据库。这是我的代码当前的外观:

$user = "myuser"; 
$password = "myuser";
$con = odbc_connect("Driver={Devart ODBC driver for Oracle};Direct=true;Host=host;Port=1521;Service Name=serv;User ID=myuser;Password=myuser", $user, $password);

$insercion = "INSERT INTO `table` (`attr1`, `attr2`, `attr3`) VALUES (?, ?, ?)";
**$rs = odbc_execute($con, array($attr1, $attr2, $attr3));**

if($rs)
    echo "Inserted";

字符串
我得到以下错误:
Copyright © 2016 www.cnjs.com. All Rights Reserved.粤ICP备16048888号-1
第63行是上面代码中**之间的一行。我错过了什么吗?这整个Oracle的事情看起来一团糟...提前感谢!

附加信息

我已经在OBDC数据源(32位)下创建了一个新的系统DSN。当点击“测试连接”时,它会显示“连接成功”。
执行var_dump($con);会显示以下内容:
资源(5)类型(odbc链接)

gudnpqoy

gudnpqoy1#

我在寻找另一个问题时偶然发现了这个老问题,所以我想我不妨回答一下。
因为你在预处理语句中使用参数,所以不能省略代码中的odbc_prepare部分。这应该没问题:

$user = "myuser"; 
$password = "myuser";
$con = odbc_connect("Driver={Devart ODBC driver for Oracle};Direct=true;Host=host;Port=1521;Service Name=serv;User ID=myuser;Password=myuser", $user, $password);

$insercion = "INSERT INTO `table` (`attr1`, `attr2`, `attr3`) VALUES (?, ?, ?)";
$stmt = odbc_prepare($con, $insercion);
$rs = odbc_execute($stmt, array($attr1, $attr2, $attr3));

if($rs)
    echo "Inserted";

字符串

相关问题