statement = $this->db->mysqli->prepare($sql)) { $this->errorCode = $this->db->mysqli->errno; $this->errorString = $this->db->mysqli->error; } return $this; } //-------------------------------------------------------------------- /** * Takes a new set of data and runs it against the currently * prepared query. Upon success, will return a Results object. * * @param array $data * * @return boolean */ public function _execute(array $data): bool { if (is_null($this->statement)) { throw new \BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); } // First off -bind the parameters $bindTypes = ''; // Determine the type string foreach ($data as $item) { if (is_integer($item)) { $bindTypes .= 'i'; } elseif (is_numeric($item)) { $bindTypes .= 'd'; } else { $bindTypes .= 's'; } } // Bind it $this->statement->bind_param($bindTypes, ...$data); $success = $this->statement->execute(); return $success; } //-------------------------------------------------------------------- /** * Returns the result object for the prepared query. * * @return mixed */ public function _getResult() { return $this->statement->get_result(); } //-------------------------------------------------------------------- }