:sig
DValue mysql_query(MySQL* m, String q, StringMap params)

:params
m : pointer to an active MySQL connection struct
q : a string containing a MySQL query
params : optional, a list of query parameter keys and values
return value : a list of rows returned from executing the query

:see
>mysql

:content
Executes a MySQL query and returns the resulting data, if any.

`params` provides the query parameter values used by the statement. Use named `:name` placeholders only; positional `?` placeholders are rejected.

```cpp
StringMap params;
params["email"] = "ada@example.test";
DValue rows = mysql_query(m,
    "select id, email from users where email = :email",
    params
);
```

The result is returned as a `DValue`, which makes it easy to iterate through rows and read fields with the usual `DValue` accessors.

Related:

- PHP: modern database access through `mysqli_*` or PDO methods rather than the old `mysql_*` family
- JavaScript / Node.js: clients such as `mysql2`, query builders, or ORM adapters
