mysqli
PHP Manual

mysqli::query

mysqli_query

(PHP 5)

mysqli::query -- mysqli_queryRealiza una consulta a la Base de Datos

Descripción

Estilo orientado a objetos

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

Estilo por procedimientos

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

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".

Parámetros

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

Valores devueltos

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.

Historial de cambios

Versión Descripción
5.3.0 Se agrego la posibilidad de consultas asincronas.

Ejemplos

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

Ver también


mysqli
PHP Manual