従業員を検索して必要な情報を返すための、より大きなWebアプリケーションの一部として次のコードがあります。クエリ自体は、完了して結果セットを返すのにほとんどまたはまったく時間がかかりません。改善が必要と思われるのは、現在、json_encodeがフロントエンドに戻るために結果を配列にエンコードしている方法です。私はコードを改善する方法についてのアイデアがありません(したがって、ここで私の質問があります)。どんなアイデアでも大歓迎です!
<?php
require_once("class.employee.php");
$employee = new Employee();
$employeeSearch = $employee->searchEmployees($_REQUEST['q']);
$employeeResults = array();
$row_array['id'] = $_REQUEST['q'];
$row_array['empName'] = $_REQUEST['q'];
$row_array['empBusinessTitle'] = '';
$row_array['empFacility'] = '';
array_push($employeeResults, $row_array);
while ($empInfo = $employeeSearch->fetchObject()) {
$row_array['id'] = $empInfo->empUserName;
$row_array['empName'] = ucwords($empInfo->empName);
$row_array['empBusinessTitle'] = $empInfo->empBusinessTitle;
$facilityName = $employee->getFacilityIDByAD($empInfo->empUserName);
$row_array['empFacility'] = isset($facilityName->facilityName) ? $facilityName->facilityName : '';
array_push($employeeResults, $row_array);
}
$ret['results'] = $employeeResults;
echo json_encode($ret);
Class Employee {
public function searchEmployees($query) {
try {
$dbh = new PDO($this->dbDSN, $this->dbUser, $this->dbPass);
$statement = $dbh->prepare("SELECT empID, CONCAT(empFirstName,' ',empLastName) as empName, empUserName, empBusinessTitle from $this->tblEmployeePeople where CONCAT(empfirstname,' ',emplastName) LIKE CONCAT('%',:query,'%') and empUserName != ''");
$statement->bindParam(':query', $query);
$statement->execute();
$dbh = null;
return $statement;
} catch (PDOException $e) {
echo $e->getMessage();
}
}
}?>