(PHP 5, PHP 7, PHP 8)
mysqli::prepare -- mysqli_prepare — Prepara una consulta SQL para su ejecución
Estilo orientado a objetos
Estilo por procedimientos
Prepara la consulta SQL y devuelve un gestor de consulta para ser utilizado en futuras operaciones con la consulta. La consulta debe constar de una única consulta SQL.
Los parámetros de marcadores deben ser vinculados a variables utilizadas en las funciones mysqli_stmt_bind_param() y/o mysqli_stmt_bind_result() antes de ejecutar la consulta o recuperar las filas.
link
Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()
query
La consulta, en forma de string.
Este parámetro puede incluir uno o más parámetros de marcadores en la consulta SQL con el carácter "signo de interrogación" (?
) en la posición apropiada.
Nota:
Los marcadores están permitidos únicamente en ciertos lugares de las consultas SQL. Por ejemplo, están permitidos en la lista
VALUES()
de una consultaINSERT
(para especificar los valores de las columnas para una fila), o en una comparación de una cláusulaWHERE
para especificar un valor de comparación. Sin embargo, no están permitidos para los identificadores (de tablas o columnas).
mysqli_prepare() devuelve un objeto de sentencia o false
si ocurre un error.
If mysqli error reporting is enabled (MYSQLI_REPORT_ERROR
) and the requested operation fails,
a warning is generated. If, in addition, the mode is set to MYSQLI_REPORT_STRICT
,
a mysqli_sql_exception is thrown instead.
Ejemplo #1 Ejemplo con mysqli::prepare()
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Verificación de la conexión */
if (mysqli_connect_errno()) {
printf("Fallo en la conexión: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* Crea una consulta preparada */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* Vinculación de los marcadores */
$stmt->bind_param("s", $city);
/* Ejecución de la consulta */
$stmt->execute();
/* Vinculación de las variables resultantes */
$stmt->bind_result($district);
/* Obtención de los valores */
$stmt->fetch();
printf("%s está en el distrito de %s\n", $city, $district);
/* Cierre de la sentencia */
$stmt->close();
}
/* Cierre de la conexión */
$mysqli->close();
?>
Estilo por procedimientos
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* Verificación de la conexión */
if (mysqli_connect_errno()) {
printf("Fallo en la conexión: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* Crea una consulta preparada */
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {
/* Vinculación de los marcadores */
mysqli_stmt_bind_param($stmt, "s", $city);
/* Ejecución de la consulta */
mysqli_stmt_execute($stmt);
/* Vinculación de las variables resultantes */
mysqli_stmt_bind_result($stmt, $district);
/* Obtención de los valores */
mysqli_stmt_fetch($stmt);
printf("%s está en el distrito de %s\n", $city, $district);
/* Cierre de la sentencia */
mysqli_stmt_close($stmt);
}
/* Cierre de la conexión */
mysqli_close($link);
?>
El resultado de los ejemplos sería:
Amersfoort está en el distrito de Utrecht