(PHP 5)
mysqli::query -- mysqli_query — Realiza una consulta a la Base de Datos
Estilo orientado a objetos
Estilo por procedimientos
Realiza una consulta o busqueda(query
) en la base de datos.
Para consultas que no sean DML (distintas de INSERT, UPDATE o DELETE), esta funcion es similar a invocar a mysqli_real_query() seguida de mysqli_use_result() o mysqli_store_result().
Nota:
En el caso de pasarle una sentencia a mysqli_query() que sea mayor que max_allowed_packet del servidor, los códigos de error retornados difieren dependiendo de si se está usando el Controlador Nativo de MySQL(mysqlnd) o la Biblioteca Cliente de MySQL (libmysqlclient). El comportamiento es el siguiente:
mysqlnd en Linux retorna un codigo de error 1153. lo que significa "tiene un paquete mayor que max_allowed_packet bytes".
mysqlnd en Windows retorna un codigo de error 2006. Este codigo de error significa"que el servidor salio de linea".
libmysqlclient en toda las plataformas retorna el código de error 2006. Este mensaje de error significa que "el servidor se ha salido".
link
Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()
query
La cadena de la consulta a la base de dato.
La data dentro de la consulta a la BD debe ser escapada apropiadamente.
resultmode
Ya sea la constante MYSQLI_USE_RESULT
o
MYSQLI_STORE_RESULT
dependiendo del resultado deseado. Por defecto se usa la constante MYSQLI_STORE_RESULT
.
Si se usaMYSQLI_USE_RESULT
todas la llamadas poesteriore retornaran con un error
will return error Commands out of sync al menos que llamae la funcion call mysqli_free_result()
Con MYSQLI_ASYNC
(disponible conh mysqlnd), es posible hacer consulta de manera asincrona.
mysqli_poll() se utiliza para obtener los resultados dicha consulta
Retorna FALSE
si hay fallas. Si una consulta del tipo SELECT, SHOW, DESCRIBE o
EXPLAIN es exitosa la funcion mysqli_query() retornara
El objeto de la clase mysqli_result. Para otras consultas mysqli_query() retornara TRUE
si tiene exito.
Versión | Descripción |
---|---|
5.3.0 | Se agrego la posibilidad de consultas asincronas. |
Ejemplo #1 Ejemplo de mysqli::query()
Estilo orientado a objetos
<?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();
?>
Estilo por procedimientos
<?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);
?>
El resultado de los ejemplos serían:
Table myCity successfully created. Select returned 10 rows. Error: Commands out of sync; You can't run this command now