mysqli::execute_query
mysqli_execute_query
(PHP 8 >= 8.2.0)
mysqli::execute_query -- mysqli_execute_query — Prepara, vincula los parámetros y ejecuta una sentencia SQL
Descripción
Estilo orientado a objetos
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 bytes
(got a packet bigger than
max_allowed_packet bytes
).
-
En Windows devuelve un código de error 2006.
Este mensaje de error significa el servidor ha desaparecido
(server has gone away
).
Parámetros
-
mysql - Solo estilo procedimental: Un objeto mysqli
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 sentencia
INSERT (para especificar los valores de columnas para una fila), o en una
comparación con una columna en una cláusula WHERE 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.
Valores devueltos
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.
Ejemplos
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"]);
}
<?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"]);
}
Los ejemplos anteriores mostrarán algo similar a:
Aachen (Nordrhein-Westfalen)
Augsburg (Baijeri)
Bergisch Gladbach (Nordrhein-Westfalen)
Berlin (Berliini)
Bielefeld (Nordrhein-Westfalen)