(PHP 5, PHP 7, PHP 8)
mysqli::prepare -- mysqli_prepare — Prepara una consulta SQL para su ejecución
Estilo orientado a objetos
Estilo procedimental
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.
mysqlSolo estilo procedimental: Un objeto mysqli devuelto por mysqli_connect() o mysqli_init()
queryLa 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áusulaWHEREpara 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.
Si el informe de errores de mysqli está habilitado (MYSQLI_REPORT_ERROR) y la operación solicitada falla,
se genera una advertencia. Si, además, el modo está configurado como MYSQLI_REPORT_STRICT,
se lanza una mysqli_sql_exception en su lugar.
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 procedimental
<?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);
?>Los ejemplos anteriores mostrarán :
Amersfoort está en el distrito de Utrecht