mysqli::query, mysqli_query


Description

Object oriented stylemixed mysqli::query(string query,
int resultmode= =MYSQLI_STORE_RESULT);

Procedural stylemixed mysqli_query(mysqli link,
string query,
int resultmode= =MYSQLI_STORE_RESULT);

Performs a query against the database.

Functionally, using this function is identical to calling mysqli_real_query followed either by mysqli_use_result or mysqli_store_result.Note

In the case where you pass a statement to mysqli_query that is longer than max_allowed_packet of the server, the returned error codes are different depending on whether you are using MariaDB Native Driver (mysqlnd) or MariaDB Client Library (libmysql). The behavior is as follows:

Parameters

link

Procedural style only: A link identifier returned by mysqli_connect or mysqli_init

query

The query string.

Data inside the query should be properly escaped.

resultmode

Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.

If you use MYSQLI_USE_RESULT all subsequent calls will return error Commands out of sync unless you call mysqli_free_result

With MYSQLI_ASYNC (available with mysqlnd), it is possible to perform query asynchronously. mysqli_poll is then used to get results from such queries.

Return Values

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query will return a mysqli_result object. For other successful queries mysqli_query will return TRUE .

Changelog

Version Description
5.3.0 Added the ability of async queries.

Examples

Example 20.130. mysqli::query example

Object oriented style

<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
/* check connection */
if ($mysqli->connect_errno) {
 printf('Connect failed: %s\n', $mysqli->connect_error);
 exit();
}
/* Create table doesn't return a resultset */
if ($mysqli->query('CREATE TEMPORARY TABLE myCity LIKE City') === TRUE) {
 printf('Table myCity successfully created.\n');
}
/* Select queries return a resultset */
if ($result = $mysqli->query('SELECT Name FROM City LIMIT 10')) {
 printf('Select returned %d rows.\n', $result->num_rows);
 /* free result set */
 $result->close();
}
/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = $mysqli->query('SELECT * FROM City', MYSQLI_USE_RESULT)) {
 /* Note, that we can't execute any functions which interact with the
 server until result set was closed. All calls will return an
 'out of sync' error */
 if (!$mysqli->query('SET @a:='this will not work'')) {
 printf('Error: %s\n', $mysqli->error);
 }
 $result->close();
}
$mysqli->close();
?>

Procedural style

<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
/* check connection */
if (mysqli_connect_errno()) {
 printf('Connect failed: %s\n', mysqli_connect_error());
 exit();
}
/* Create table doesn't return a resultset */
if (mysqli_query($link, 'CREATE TEMPORARY TABLE myCity LIKE City') === TRUE) {
 printf('Table myCity successfully created.\n');
}
/* Select queries return a resultset */
if ($result = mysqli_query($link, 'SELECT Name FROM City LIMIT 10')) {
 printf('Select returned %d rows.\n', mysqli_num_rows($result));
 /* free result set */
 mysqli_free_result($result);
}
/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = mysqli_query($link, 'SELECT * FROM City', MYSQLI_USE_RESULT)) {
 /* Note, that we can't execute any functions which interact with the
 server until result set was closed. All calls will return an
 'out of sync' error */
 if (!mysqli_query($link, 'SET @a:='this will not work'')) {
 printf('Error: %s\n', mysqli_error($link));
 }
 mysqli_free_result($result);
}
mysqli_close($link);
?>

The above examples will output:

Table myCity successfully created.
Select returned 10 rows.
Error: Commands out of sync; You can't run this command now

See Also

mysqli_real_query
mysqli_multi_query
mysqli_free_result

Retornar