public function query($sql)
{
// what are we doing?
$log = usingLog()->startAction(["run SQL against '{$this->args[0]}':", $sql]);
// connect
$conn = new mysqli($this->args[0], $this->args[1], $this->args[2]);
if ($conn->connect_errno) {
$log->endAction('unable to connect to database :( - ' . $conn->connect_error);
throw new E5xx_ActionFailed(__METHOD__);
}
// switch database
if (isset($this->args[2])) {
if (!$conn->select_db($this->args[3])) {
$log->endAction("unable to switch to database '{$this->args[2]}' - " . $conn->error);
throw new E5xx_ActionFailed(__METHOD__);
}
}
// run the SQL
$result = $conn->query($sql);
// what happened?
if (!$result) {
$log->endAction("failed to run query");
throw new E5xx_ActionFailed(__METHOD__, "query failed - " . $conn->error);
}
// success
$log->endAction();
return $result;
}