【发布时间】:2012-06-30 05:38:17
【问题描述】:
我有一些 PHP 代码通过 OCI8 库写入 Oracle 数据库。我有一个不会以编程方式执行的插入语句 - 如果我打印出该语句并通过 SquirrelSQL 运行它,它将成功插入数据。我在代码的其他地方有删除和选择语句,它们运行良好。可能是什么问题?正如我所说,如果我打印 $om_query 并手动运行它会成功插入。我没有收到任何其他错误。
$om_query = "INSERT INTO DB.TABLE(R1,R2) VALUES(V1,V2)";
$s2 = oci_parse($conn, $om_query);
$qs = oci_execute($s2);
oci_commit ($conn);
if(!$qs){
$ma = oci_error();
$failedqueries .= '<br /><br />MAINQ: ' . $om_query . '<br /><b>OCI_ERROR_MSG: </b>' . $ma['message'];
}
oci_error() 不附加任何有用的东西。
【问题讨论】:
-
也许它不会失败? (写“故障检查不会触发”)
-
不会产生任何可见的错误,也不会触发错误条件。我可以在 SquirrelSQL 上看到数据库,并且可以看到它没有输入(当我通过 Squirrel 和我的应用程序的数据管理部分运行手动查询时,我可以看到它已输入)。也删除作品。
-
我认为您需要立即检查错误,(在提交之前)。提交可能会向数据库发送另一个查询 (COMMIT),导致它丢弃最后生成的错误消息。
-
你说 oci_error() 没有附加任何有用的东西。它附加了哪些无用的东西?
-
您认为
V1和V2代表什么?它们不是文字;它们不能是表中的列,那么它们是什么?也许您的问题的答案是“没有完美的 SQL 语句”。