Php 和 oracle OCI 查询
Php and oracle OCI query
我对这段代码有疑问
$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)
return 20000 行,while (($row = oci_fetch_assoc($stmt)) != false) {
array_push($results, $row);
}
需要很多时间。有没有一种方法可以让我 return echo json_encode($results);
没有 WHILE 循环。
提前致谢。
我不确定它是否会明显更快,但作为 ,您可以尝试使用 oci_fetch_all
。您需要按行(而不是按列,默认)将标志传递给 return 以匹配您当前的输出格式:
oci_fetch_all($stmt, $output, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
json_encode($output);
有关详细信息,请参阅 the documentation。
或尝试使用其他方式推送您的阵列。 "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;
我对这段代码有疑问
$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)
return 20000 行,while (($row = oci_fetch_assoc($stmt)) != false) {
array_push($results, $row);
}
需要很多时间。有没有一种方法可以让我 return echo json_encode($results);
没有 WHILE 循环。
提前致谢。
我不确定它是否会明显更快,但作为 oci_fetch_all
。您需要按行(而不是按列,默认)将标志传递给 return 以匹配您当前的输出格式:
oci_fetch_all($stmt, $output, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
json_encode($output);
有关详细信息,请参阅 the documentation。
或尝试使用其他方式推送您的阵列。 "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;