次のコードは、私の実際のコードのモックアップです。myFunctionが呼び出されると、パフォーマンスが大幅に低下します。myTableは数百行以内ですが、myFunctionを呼び出すと実行時間が最大10秒長くなります。すでにそのテーブルにアクセスしているループ内のテーブルの行にアクセスしようとすると、本質的に何か問題がありますか?
<select>
<?php
$stmt = SQLout ("SELECT ID,Title FROM myTable WHERE LEFT(Title,2) = ? ORDER BY Title DESC",
array ('s', $co), array (&$id, &$co_title));
while ($stmt->fetch()) {
if (myFunction($id)) // skip this function call and save 10 seconds
echo '<option value="' . $co_title . '">' . $co_title . '</option>';
}
$stmt->close();
function myFunction ($id) {
$stmt = SQLout ("SELECT Info FROM myTable WHERE ID = ?",
array ('i', $id), array (&$info));
if ($stmt->fetch()) {
$stmt->close();
if ($info == $something)
return true;
}
return false;
}
?>
SQLoutは基本的に次のとおりです。
$sqli_db->prepare($query);
$stmt->bind_param;
$stmt->execute();
$stmt->bind_result;
return $stmt;