MYSQLI_QUERY(3) 1 MYSQLI_QUERY(3)
mysqli::query - Performs a query on the database
Object oriented style
SYNOPSIS
mixed mysqli::query (string $query, [int $resultmode = MYSQLI_STORE_RESULT])
DESCRIPTION
Procedural style
mixed mysqli_query (mysqli $link, string $query, [int $resultmode = MYSQLI_STORE_RESULT])
Performs a $query against the database.
For non-DML queries (not INSERT, UPDATE or DELETE), this function is similar to calling mysqli_real_query(3) followed by either
mysqli_use_result(3) or mysqli_store_result(3).
Note
In the case where you pass a statement to mysqli_query(3) that is longer than max_allowed_packet of the server, the returned error
codes are different depending on whether you are using MySQL Native Driver ( mysqlnd) or MySQL Client Library ( libmysqlclient). The
behavior is as follows:
o mysqlnd on Linux returns an error code of 1153. The error message means got a packet bigger than max_allowed_packet bytes.
o mysqlnd on Windows returns an error code 2006. This error message means server has gone away.
o libmysqlclient on all platforms returns an error code 2006. This error message means server has gone away.
PARAMETERS
o $
link -Procedural style only: A link identifier returned by mysqli_connect(3) or mysqli_init(3)
o $query
- The query string. Data inside the query should be properly escaped.
o $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(3) With MYSQLI_ASYNC (available with mysqlnd), it is possible to perform query asynchronously. mysqli_poll(3)
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(3) will return a mysqli_result object. For
other successful queries mysqli_query(3) will return TRUE.
CHANGELOG
+--------+--------------------------------------+
|Version | |
| | |
| | Description |
| | |
+--------+--------------------------------------+
| 5.3.0 | |
| | |
| | Added the ability of async queries. |
| | |
+--------+--------------------------------------+
EXAMPLES
Example #1
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
", $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.
");
}
/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) {
printf("Select returned %d rows.
", $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
", $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
", 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.
");
}
/* Select queries return a resultset */
if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) {
printf("Select returned %d rows.
", 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
", 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(3), mysqli_multi_query(3), mysqli_free_result(3).
PHP Documentation Group MYSQLI_QUERY(3)