如果Oracle 10g中的查询失败,我想获取特定的错误消息。对于MySQL,PHP具有mysql_error()函数,可以返回有关查询失败原因的详细信息。我查看了php.net手册中的oci_execute()函数,但从我看到它只在失败时返回false。
我尝试使用oc_error(),但我没有从中得到任何东西。
以下是代码示例:
$err = array();
$e = 0;
//Cycle through all files and insert new records into database
for($f=0; $f<sizeof($files); $f++)
{
$invoice_number = $files[$f]['invoice_number'];
$sold_to = $files[$f]['sold_to'];
$date = $files[$f]['date'];
$sql = "insert into invoice (dealer_id, invoice_number, invoice_date)
values ('$sold_to', '$invoice_number', '$date')";
$stid = oci_parse($conn, $sql);
$result = oci_execute($stid);
//If query fails
if(!$result)
{
$err[$e] = oci_error();
$e++;
}
}
print_r($err);
对print_r($ err)的回应:
Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => )
答案 0 :(得分:7)
您是否尝试将$ stid传递给oci_error?
$err[$e] = oci_error($stid);
答案 1 :(得分:3)
oci_error()
函数接受一个参数,指定错误的上下文。传递它没有参数只适用于某些类型的连接错误。你想要做的是传递解析的语句资源,如下所示:
$err = oci_error($stid);
(另请注意,oci_error
的返回值是一个数组,因此我将整个输出分配给$err
数组变量)