I have a prolem with this code
$stmt = oci_parse($db, $sql);
$isQueryOk = oci_execute($stmt);
if ($isQueryOk) {
while (($row = oci_fetch_assoc($stmt)) != false) {
array_push($results, $row);
}
echo json_encode($results);
} else {
$msg = "Error FETCHING ALL [$sql] on " . mb_strtoupper($dbTable) . "!";
}
The problem is that if oci_fetch_assoc($stmt)
return 20000 rows, the while (($row = oci_fetch_assoc($stmt)) != false) { array_push($results, $row); }
while (($row = oci_fetch_assoc($stmt)) != false) { array_push($results, $row); }
takes to much time. Is there a way that i can return echo json_encode($results);
without the WHILE cycle.
Thanks in advance.
OR try to use another way to push your array. "Note: If you use array_push() to add one element to the array it's better to use $array[] = because in that way there is no overhead of calling a function." http://php.net/manual/en/function.array-push.php
$results[] = $row;
I'm not sure it'll be significantly faster, but as Marcos Sedrez wrote you can try using oci_fetch_all
. You'll need to pass it a flag to return by row (instead of by column, the default) to match your current output format:
oci_fetch_all($stmt, $output, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
json_encode($output);
See the documentation for further information.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.