Oracle OCI 语句与 ODBC 语句的差异。 (php)
Oracle OCI statement vs ODBC statement discrepancy. (php)
当使用 PHP 连接到数据库时,我一直在使用具有以下查询的 ODBC 连接:
"SELECT * FROM TAB.LE WHERE TAB.LE.Id = 1";
其中表名是 TAB.LE
。
此处不需要用于进行查询的代码 - 但它可以正常返回正确的结果。当我使用 OCI 连接时,相同的查询失败:
$conn = oci_connect("username", "password", "database");
if($conn){
$query = "SELECT * FROM TAB.LE WHERE TAB.LE.Id = 1";
$stid = oci_parse($conn, $query);
$res = oci_execute($query);
if($res){
echo "success";
}
else{
echo "failed";
}
}
我经常在屏幕上看到 failed
。我不知道为什么。奇怪的是:表名 TAB.LE
适用于 ODBC 连接;然而,当在 MS Access 中查看时,它显示为 TAB_LE
。我曾尝试在 OCI 连接中使用这种不同的表示法,但无济于事。
oci_execute() 执行先前从 oci_parse().
返回的语句
$stid = oci_parse($conn, $query);
所以改变
$res = oci_execute($query);
至
$res = oci_execute($stid);
当使用 PHP 连接到数据库时,我一直在使用具有以下查询的 ODBC 连接:
"SELECT * FROM TAB.LE WHERE TAB.LE.Id = 1";
其中表名是 TAB.LE
。
此处不需要用于进行查询的代码 - 但它可以正常返回正确的结果。当我使用 OCI 连接时,相同的查询失败:
$conn = oci_connect("username", "password", "database");
if($conn){
$query = "SELECT * FROM TAB.LE WHERE TAB.LE.Id = 1";
$stid = oci_parse($conn, $query);
$res = oci_execute($query);
if($res){
echo "success";
}
else{
echo "failed";
}
}
我经常在屏幕上看到 failed
。我不知道为什么。奇怪的是:表名 TAB.LE
适用于 ODBC 连接;然而,当在 MS Access 中查看时,它显示为 TAB_LE
。我曾尝试在 OCI 连接中使用这种不同的表示法,但无济于事。
oci_execute() 执行先前从 oci_parse().
$stid = oci_parse($conn, $query);
所以改变
$res = oci_execute($query);
至
$res = oci_execute($stid);