(PHP 5, PHP 7, PHP 8)
mysqli::query -- mysqli_query — Realiza una consulta a la base de datos
Estilo orientado a objetos
Estilo por procedimientos
Realiza una consulta dada por query
a 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 del valor de
max_allowed_packet
del servidor, los códigos de error retornados diferirán 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 código de error 1153. Este mensaje de error significa quese tiene un paquete mayor que.max_allowed_packet
bytes
mysqlnd
en Windows retorna un código de error 2006. Este mensaje de error significa queel servidor no está disponible.
libmysqlclient
en toda las plataformas retorna el código de error 2006. Este mensaje de error significa queel servidor no está disponible.
link
Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()
query
La string de la consulta.
Los datos dentro de la consulta deberían estar adecuadamente escapados.
resultmode
La constante MYSQLI_USE_RESULT
o MYSQLI_STORE_RESULT
dependiendo del compotamiento deseado. Por defecto, se usa la constante MYSQLI_STORE_RESULT
.
Si se usa MYSQLI_USE_RESULT
todas la llamadas posteriores retornarán con un error Commands out of sync
a menos que se llame a mysqli_free_result()
Con MYSQLI_ASYNC
(disponible con mysqlnd), es posible hacer consulta de manera asíncrona. mysqli_poll() se utiliza para obtener los resultados de dichas consultas.
Retorna false
en caso de error. Si una consulta del tipo SELECT, SHOW, DESCRIBE
o EXPLAIN
es exitosa, mysqli_query() retornará un objeto mysqli_result. Para otras consultas exitosas de mysqli_query() retornará true
.
Versión | Descripción |
---|---|
5.3.0 | Se agregó la posibilidad de realizar consultas asíncronas. |
Ejemplo #1 Ejemplo de mysqli::query()
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
if ($mysqli->connect_errno) {
printf("Falló la conexión: %s\n", $mysqli->connect_error);
exit();
}
if ($mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
printf("Se creó con éxtio la tabla myCity.\n");
}
if ($resultado = $mysqli->query("SELECT Name FROM City LIMIT 10")) {
printf("La selección devolvió %d filas.\n", $resultado->num_rows);
$resultado->close();
}
if ($resultado = $mysqli->query("SELECT * FROM City", MYSQLI_USE_RESULT)) {
if (!$mysqli->query("SET @a:='esto no funcionará'")) {
printf("Error: %s\n", $mysqli->error);
}
$resultado->close();
}
$mysqli->close();
?>
Estilo por procedimientos
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
if (mysqli_connect_errno()) {
printf("Falló la conexión: %s\n", mysqli_connect_error());
exit();
}
if (mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
printf("Se creó con éxtio la tabla myCity.\n");
}
if ($resultado = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) {
printf("La selección devolvió %d filas.\n", mysqli_num_rows($resultado));
mysqli_free_result($resultado);
}
if ($resultado = mysqli_query($link, "SELECT * FROM City", MYSQLI_USE_RESULT)) {
if (!mysqli_query($link, "SET @a:='esto no funcionará'")) {
printf("Error: %s\n", mysqli_error($link));
}
mysqli_free_result($resultado);
}
mysqli_close($link);
?>
El resultado de los ejemplos sería:
Se creó con éxtio la tabla myCity. La selección devolvió 10 filas. Error: Commands out of sync; You can't run this command now