mysqli::query

mysqli_query

(PHP 5, PHP 7, PHP 8)

mysqli::query -- mysqli_queryRealiza una consulta a la base de datos

Descripción

Estilo orientado a objetos

mysqli::query(string$query, int$resultmode = MYSQLI_STORE_RESULT): mixed

Estilo por procedimientos

mysqli_query(mysqli$link, string$query, int$resultmode = MYSQLI_STORE_RESULT): mixed

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 que se tiene un paquete mayor que max_allowed_packet bytes.

  • mysqlnd en Windows retorna un código de error 2006. Este mensaje de error significa que el servidor no está disponible.

  • libmysqlclient en toda las plataformas retorna el código de error 2006. Este mensaje de error significa que el servidor no está disponible.

Parámetros

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.

Valores devueltos

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.

Historial de cambios

VersiónDescripción
5.3.0 Se agregó la posibilidad de realizar consultas asíncronas.

Ejemplos

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

Ver también

To Top