public function run()
	{
		// First lets login to the phpMyAdmin Server, if not already.
		if ($this->loggedIn == null)
		{
			$result = $this->taskPhpMyAdminLogin()
				->phpMyAdminUrl($this->phpMyAdminUrl)
				->phpMyAdminUser($this->phpMyAdminUser)
				->phpMyAdminPass($this->phpMyAdminPass)
				->remoteDbHost($this->remoteDbHost)
			->run();

			if (!$result->wasSuccessful())
			{
				throw new RuntimeException('Failed to Login!');
			}

			$this->loggedIn = $result->getTask();
		}

		// Execute our sql
		$this->printTaskInfo('Executing the query.');
		$response = $this->loggedIn->getClient()->post('import.php',
		[
			'form_params' =>
			[
				'db' => $this->remoteDbName,
				'server' => $this->loggedIn->getServerId(),
				'token' => $this->loggedIn->getToken(),
				'sql_query' => $this->query,
				'sql_delimiter' => ';'

			]
		])->getBody();

		// Check to make sure it worked
		if (!$this->confirmSuccessfulImport($response))
		{
			// Save the response to a temp file for later inspection
			$responseLog = tempnam(sys_get_temp_dir(), 'phpMyAdminResponse');
			file_put_contents($responseLog, $response);

			// Bail out
			throw new RuntimeException
			(
				'Your query failed. '.
				'A log of the complete HTTP response has been saved to: '.
				$responseLog
			);
		}

		// If we get to here assume everything worked
		return Result::success($this);
	}