mysqli::execute_query

mysqli_execute_query

(PHP 8 >= 8.2.0)

mysqli::execute_query -- mysqli_execute_queryPrepara, vincula los parámetros y ejecuta una sentencia SQL

Descripción

Estilo orientado a objetos

public mysqli::execute_query(string $query, ?array $params = null): mysqli_result|bool

Estilo por procedimientos

mysqli_execute_query(mysqli $mysql, string $query, ?array $params = null): mysqli_result|bool

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

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 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"]);
}

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)

Ver también

add a note

User Contributed Notes 1 note

up
4
theking2(at)king(dot).co.
1 year ago
A function to call a stored procedure with an arbitrary number of IN parameters and one OUT parameter, for instance returning affected row count. The return value of yhe function is this value.

<?php

/**
* call_sp Call the specified stored procedure with the given parameters.
* The first parameter is the name of the stored procedure.
* The remaining parameters are the (in) parameters to the stored procedure.
* the last (out) parameter should be an int, like state or number of affected rows.
*
* @param mixed $sp_name The name of the stored procedure to call.
* @param mixed $params The parameters to pass to the stored procedure.
* @return int The number of affected rows.
*/
function call_sp( \mysqli $db, string $sp_name, ...$params ): int
{
$sql = "CALL $sp_name( ";
$sql .= implode( ", ", array_fill( 0, count( $params ), "?" ) );
$sql .= ", @__affected );";

$result = $db->execute_query( $sql, $params );
$result = $db->query( "select @__affected;" );
$affected = (int) $result->fetch_column( 0 );
return
$affected;
}
To Top