AsyncMysqlQueryResult::mapRows

Returns the actual rows returned by the successful query, each row including the name and value for each column.

Description

public function mapRows(): Vector<Map>

Returns the actual rows returned by the successful query, each row including the name and value for each column.

All values come back as strings. If you want typed values, use mapRowsTyped().

The rows are returned as a Vector of Map objects. The Map objects map column names to (possibly null) string values.

Return Values

  • Vector<Map> - A Vector of Map objects, where the Vector elements are the rows and the Map elements are the column names and values associated with that row.

Examples

When executing a query, you can get the rows returned from it in the form of a Vector of Map objects, where each key of the Map is a column name. This example shows how to use AsyncMysqlQueryResult::mapRows to get that Map. A resulting Map may look like:

object(HH\Vector)#9 (2) {
  [0]=>
  object(HH\Map)#10 (1) {
    ["name"]=>
    string(11) "Joel Marcey"
  }
  [1]=>
  object(HH\Map)#11 (1) {
    ["name"]=>
    string(11) "Fred Emmott"
  }
}

Note that all values in the Map returned from mapRows will be string or null. If you want specifically-typed values, use mapRowsTyped

<?hh

namespace Hack\UserDocumentation\API\Examples\AsyncMysql\QueryResult\MapRows;

use \Hack\UserDocumentation\API\Examples\AsyncMysql\ConnectionInfo as CI;

async function connect(\AsyncMysqlConnectionPool $pool):
  Awaitable<\AsyncMysqlConnection> {
  return await $pool->connect(
    CI::$host,
    CI::$port,
    CI::$db,
    CI::$user,
    CI::$passwd
  );
}
async function simple_query(): Awaitable<int> {
  $pool = new \AsyncMysqlConnectionPool(array());
  $conn = await connect($pool);
  $result = await $conn->query('SELECT name FROM test_table WHERE userID < 50');
  var_dump($result->mapRows()->count() === $result->numRows());
  $conn->close();
  return $result->numRows();
}

function run(): void {
  $r = \HH\Asio\join(simple_query());
  var_dump($r);
}

run();
Output
bool(true)
int(2)