function performGet() { withDatabase(function ($database) { $id = getParameter(PARAMETER_ID); $dataType = getParameter(PARAMETER_DATA_TYPE); $statement = null; if ($id) { // get by id $statement = $database->prepare('SELECT * FROM DATA WHERE id=?'); $statement->bind_param("s", $id); } else { if ($dataType) { // list $statement = $database->prepare('SELECT * FROM DATA WHERE dataType=?'); $statement->bind_param("s", $dataType); } else { badRequest("missing parameter 'id' or 'dataType'"); } } executeStatement($statement); $result = $statement->get_result(); if ($id) { resultToJsonObject($result); } else { if ($dataType) { resultToJsonArray($result); } } $statement->close(); }); }
function withStatement($statement, $function) { debug("DB statement: {$statement}"); return withDatabase(function ($database) use(&$statement, &$function) { $dbStatement = $database->prepare($statement); try { return $function($dbStatement); } finally { $dbStatement->close(); } }); }