按数字循环数组 oci_fetch_all
Looping array oci_fetch_all by number
我正在使用以下语句从 Oracle 获取结果:
$nrows_g = oci_fetch_all( $geos, $r1, 0, -1, OCI_ASSOC + OCI_FETCHSTATEMENT_BY_ROW);
虽然我能够通过 foreach 构造枚举结果,但我需要使用 for 循环访问它们,或者更好的方法是使用列名。我一定是遗漏了什么,但我无法让它发挥作用。谁能指出我正确的方向?
谢谢 Steef
如果不使用 oci_fetch_all()
,通常会实现更好的性能,因为这会将整个结果集检索到内存中。迭代地获取和处理每一行可以显着降低内存使用量。
$conn = oci_connect($user, $pass, $server);
$stmt = oci_parse($conn, 'select field1, field2 from blah');
oci_execute($stmt);
while (false !== ($row = oci_fetch_assoc($stmt)) {
echo 'Field 1: ' . $row['FIELD1'] . '<br>Field 2: ' . $row['FIELD2'] . '<br>';
}
如果你真的想使用 for
循环和 oci_fetch_all()
你可以这样做:
$conn = oci_connect($user, $pass, $server);
$stmt = oci_parse($conn, 'select field1, field2 from blah');
oci_execute($stmt);
$count = oci_fetch_all($stmt, $result, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
for ($i = 0; $i < $count; $i++) {
echo 'Field 1: ' . $result[$i]['FIELD1'] . '<br>Field 2: ' . $result[$i]['FIELD2'] . '<br>';
}
我正在使用以下语句从 Oracle 获取结果:
$nrows_g = oci_fetch_all( $geos, $r1, 0, -1, OCI_ASSOC + OCI_FETCHSTATEMENT_BY_ROW);
虽然我能够通过 foreach 构造枚举结果,但我需要使用 for 循环访问它们,或者更好的方法是使用列名。我一定是遗漏了什么,但我无法让它发挥作用。谁能指出我正确的方向?
谢谢 Steef
如果不使用 oci_fetch_all()
,通常会实现更好的性能,因为这会将整个结果集检索到内存中。迭代地获取和处理每一行可以显着降低内存使用量。
$conn = oci_connect($user, $pass, $server);
$stmt = oci_parse($conn, 'select field1, field2 from blah');
oci_execute($stmt);
while (false !== ($row = oci_fetch_assoc($stmt)) {
echo 'Field 1: ' . $row['FIELD1'] . '<br>Field 2: ' . $row['FIELD2'] . '<br>';
}
如果你真的想使用 for
循环和 oci_fetch_all()
你可以这样做:
$conn = oci_connect($user, $pass, $server);
$stmt = oci_parse($conn, 'select field1, field2 from blah');
oci_execute($stmt);
$count = oci_fetch_all($stmt, $result, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
for ($i = 0; $i < $count; $i++) {
echo 'Field 1: ' . $result[$i]['FIELD1'] . '<br>Field 2: ' . $result[$i]['FIELD2'] . '<br>';
}