(PHP 8 >= 8.2.0)
mysqli::execute_query -- mysqli_execute_query — Prepara, vincula los parámetros y ejecuta una sentencia SQL
Estilo orientado a objetos
Estilo por procedimientos
Prepara la consulta SQL, vincula los parámetros y la ejecuta. El método mysqli::execute_query() es un atajo para mysqli::prepare(), mysqli_stmt::bind_param(), mysqli_stmt::execute(), y mysqli_stmt::get_result().
El modelo de sentencia puede contener cero o más marcadores de parámetros
(?
) también llamados espacios reservados.
Los valores de los parámetros deben ser proporcionados como un array
utilizando el parámetro params
.
Una sentencia preparada es creada internamente, pero nunca es expuesta fuera de la función. Es imposible acceder a las propiedades de la sentencia como se haría con el objeto mysqli_stmt. Debido a esta limitación, la información de estado es copiada al objeto mysqli y está disponible utilizando sus métodos, por ejemplo mysqli_affected_rows() o mysqli_error().
Nota:
En el caso en que una sentencia es pasada a mysqli_execute_query() que es más larga que
max_allowed_packet
del servidor, los códigos de error devueltos son diferentes dependiendo del sistema operativo. El comportamiento es el siguiente:
En Linux devuelve un código de error 1153. El mensaje de error significa
recepción de un paquete más grande que(max_allowed_packet
bytesgot a packet bigger than).max_allowed_packet
bytesEn Windows devuelve un código de error 2006. Este mensaje de error significa
el servidor ha desaparecido(server has gone away).
link
Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()
query
La consulta, en forma de string. Debe consistir en una sola sentencia SQL.
La sentencia SQL puede contener cero o más marcadores de parámetros
representados por un signo de interrogación (?
)
en las posiciones apropiadas.
Nota:
Los marcadores de parámetros solo están permitidos en ciertos lugares de las sentencias SQL. Por ejemplo, están permitidos en la lista
VALUES()
de una sentenciaINSERT
(para especificar los valores de columnas para una fila), o en una comparación con una columna en una cláusulaWHERE
para especificar un valor de comparación. Sin embargo, no están permitidos para los identificadores (como nombres de tabla o columna).
params
Una lista opcional con tantos elementos como parámetros vinculados en la sentencia SQL que se está ejecutando. Cada valor es tratado como un string.
Devuelve false
en caso de fallo. Para consultas exitosas que producen un conjunto de resultados, como
SELECT, SHOW, DESCRIBE
o EXPLAIN
, devuelve
un objeto mysqli_result. Para otras consultas exitosas,
devuelve true
.
Ejemplo #1 Ejemplo de mysqli::execute_query()
Estilo orientado a objetos
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = $mysqli->execute_query($query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}
Estilo por procedimientos
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = mysqli_execute_query($link, $query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}
El resultado de los ejemplos sería algo similar a:
Aachen (Nordrhein-Westfalen) Augsburg (Baijeri) Bergisch Gladbach (Nordrhein-Westfalen) Berlin (Berliini) Bielefeld (Nordrhein-Westfalen)