(PHP 5, PHP 7)
mysqli::prepare -- mysqli_prepare — Prepara una sentencia SQL para su ejecución
Estilo orientado a objetos
Estilo por procedimientos
Prepara la consulta SQL y devuelve un manejador de sentencia para ser utilizado por operaciones adicionales sobre la sentencia. La consulta debe constar de una única sentencia SQL.
Los marcadores de parámetros deben estar ligados a variables de aplicación utilizando mysqli_stmt_bind_param() y/o mysqli_stmt_bind_result() antes de ejecutar la sentencia u obtener las filas.
link
Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()
query
La consulta, como un string.
Nota:
No se debe agregar un punto y coma o \g a la sentencia.
Este parámetro puede incluir uno o más marcadores de parámetros en la sentencia SQL mediante la incorporación de caracteres de signo de interrogación (?) en las posiciones correctas.
Nota:
Los marcadores son legales solo en ciertos lugares en las sentencias SQL. Por ejemplo, se les permite en la lista VALUES() de una sentencia INSERT (para especificar valores de columna 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 se les permite para identificadores (como nombres de tabla o columna), en la lista de selección que nombra las columnas que se devuelven mediante una sentencia SELECT, o para especificar ambos operandos de un operador binario como el signo de igualdad =. Esta última restricción es necesaria debido a que sería imposible determinar el tipo de parámetro. Tampoco está permitido comparar un marcador con NULL mediante ? IS NULL. En general, los parámetros son legales solamente en sentencias del Lenguaje de Manipulación de Datos (DML) y no en sentencias del Lenguaje de Definición de Datos (DDL).
mysqli_prepare() devuelve un objeto de sentencia o FALSE
si ocurre un error.
Ejemplo #1 Ejemplo de mysqli::prepare()
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* verificar conexión */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* crear una sentencia preparada */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* ligar parámetros para marcadores */
$stmt->bind_param("s", $city);
/* ejecutar la consulta */
$stmt->execute();
/* ligar variables de resultado */
$stmt->bind_result($district);
/* obtener valor */
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
/* cerrar sentencia */
$stmt->close();
}
/* cerrar conexión */
$mysqli->close();
?>
Estilo por procedimientos
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* verificar conexión */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* crear una sentencia preparada */
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {
/* ligar parámetros para marcadores */
mysqli_stmt_bind_param($stmt, "s", $city);
/* ejecutar la consulta */
mysqli_stmt_execute($stmt);
/* ligar variables de resultado */
mysqli_stmt_bind_result($stmt, $district);
/* obtener valor */
mysqli_stmt_fetch($stmt);
printf("%s is in district %s\n", $city, $district);
/* cerrar sentencia */
mysqli_stmt_close($stmt);
}
/* cerrar conexión */
mysqli_close($link);
?>
El resultado de los ejemplos sería:
Amersfoort is in district Utrecht