Php oci_fetch与oci_fetch_数组

Php oci_fetch与oci_fetch_数组,php,oracle,Php,Oracle,什么时候使用oci\u fetch优于oci\u fetch\u数组oci\u fetch\u array返回实际数组,但oci\u fetch只将提取的内存存储在其内部缓冲区的某个位置 我应该知道这两个系统之间有什么性能差异吗 使用oci\u fetch(),将下一个结果行读入内部缓冲区,该缓冲区可由oci\u result()读取。所以你会这样打电话: $st_handle = oci_parse($oci_conn, 'SELECT some_field, another_field FR

什么时候使用
oci\u fetch
优于
oci\u fetch\u数组
oci\u fetch\u array
返回实际数组,但
oci\u fetch
只将提取的内存存储在其内部缓冲区的某个位置

我应该知道这两个系统之间有什么性能差异吗

使用
oci\u fetch()
,将下一个结果行读入内部缓冲区,该缓冲区可由
oci\u result()
读取。所以你会这样打电话:

$st_handle = oci_parse($oci_conn, 'SELECT some_field, another_field FROM some_table');
oci_execute($st_handle);
while(oci_fetch($st_handle)) {
   $some_field = oci_result($st_handle, 'some_field');
   var_dump($some_field);
   $another_field = oci_result($st_handle, 'another_field');
   var_dump($another_field);
}
$st_handle = oci_parse($oci_conn, 'SELECT some_field, another_field FROM some_table');
oci_define_by_name($st_handle, 'some_field', $some_field);
oci_define_by_name($st_handle, 'another_field', $another_field);
oci_execute($st_handle);
while(oci_fetch($st_handle)) {
   var_dump($some_field);
   var_dump($another_field);
}
或者,您可以使用
oci\u define\u by\u name()
预先定义要加载到内部缓冲区的变量,而不是使用
oci\u result()
,如下所示:

$st_handle = oci_parse($oci_conn, 'SELECT some_field, another_field FROM some_table');
oci_execute($st_handle);
while(oci_fetch($st_handle)) {
   $some_field = oci_result($st_handle, 'some_field');
   var_dump($some_field);
   $another_field = oci_result($st_handle, 'another_field');
   var_dump($another_field);
}
$st_handle = oci_parse($oci_conn, 'SELECT some_field, another_field FROM some_table');
oci_define_by_name($st_handle, 'some_field', $some_field);
oci_define_by_name($st_handle, 'another_field', $another_field);
oci_execute($st_handle);
while(oci_fetch($st_handle)) {
   var_dump($some_field);
   var_dump($another_field);
}
显然,这比使用诸如
oci\u fetch\u array()
oci\u fetch\u object()
之类的方法更为冗长,在这些方法中,不需要显式定义变量来读取结果

$st_handle = oci_parse($oci_conn, 'SELECT some_field, another_field FROM some_table');
oci_execute($st_handle);
while($row = oci_fetch_array($st_handle, OCI_ASSOC)) {
   var_dump($row['some_field']);
   var_dump($row['another_field']);
}
不应该有任何显著的性能差异。无论哪种方式,最终都需要将结果集分配到一个或多个可使用变量的内存中