我有一个问题与此代码
$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) . "!";
}
问题是,如果oci_fetch_assoc($stmt)
返回20000行,while (($row = oci_fetch_assoc($stmt)) != false) { array_push($results, $row); }
需要很多时间。有没有一种方法可以不使用WHILE循环返回echo json_encode($results);
。
先谢谢你了。
3条答案
按热度按时间64jmpszr1#
或者尝试使用另一种方法推送您的数组。“注意:如果你使用array_push()向数组中添加一个元素,最好使用$array[] =,因为这样就没有调用函数的开销。
7fhtutme2#
我不确定它是否会更快,但正如Marcos Sedrez所写的那样,你可以尝试使用
oci_fetch_all
。你需要传递一个标志来按行返回(而不是按列返回,默认情况下),以匹配你当前的输出格式:请参阅the documentation了解更多信息。
a9wyjsp73#
错误消息不会输出到任何地方,因此即使有错误,也不会显示
这里是固定代码