(PHP 5)
mysqli->prepare — Prepara una sentencia SQL para su ejecución
Estilo por procedimientos:
Estilo orientado a objetos (método)
mysqli_prepare() prepara la consulta SQL acentuada por la terminación en caracter nulo, y regresa un manejador para ser usado para las operaciones en la sentencia. La consulta debe consistir de un solo enunciado SQL.
Note: No debe agregar el punto y coma al fina o \g al enunciado.
El parámetro query puede incluir uno o más marcadores de parámetros en la sentencia SQL, incluyendo el caracter (?) en las posiciones apropiadas.
Note: Los marcadores son legales solo en ciertos lugares de la sentencia SQL. Por ejemplo, son permitidos en la lista de VALUES() de una sentencia INSERT (para específicar los valores de las columnas en la fila), o en una comparación con una columna en una clausula WHERE para especificar un valor de comparación.
Sin embargo, no son permitidos para identificadores (tales como nombres de tablas y columnas), en la selección de los nombres de las columnas a ser regresadas por la sentencia SELECT, o para especificar operadores binarios tales como = el signo de igual. La última restricción es necesaria porque sería imposible determinar el tipo del parámetro. No es permitido comparar los marcadores con NULL al poner ? IS NULL. En general, los parámetros son legales solo en las sentencias del lenguaje de manipulación de datos (DML), y no en las sentencias del lenguaje de definición de datos (DDL).
Los marcadores de parámetros deben estar ligados a variables de la aplicación usando mysqli_stmt_bind_param() y/o mysqli_stmt_bind_result() antes de ejecutar la sentencia SQL u obtener las filas.
mysqli_prepare() regresa un objeto o FALSE si ocurre un erro.
mysqli_stmt_execute(), mysqli_stmt_fetch(), mysqli_stmt_bind_param(), mysqli_stmt_bind_result()>, y mysqli_stmt_close().
Example#1 Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($district);
/* fetch value */
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>
Example#2 Estilo por procedimientos
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* create a prepared statement */
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $city);
/* execute query */
mysqli_stmt_execute($stmt);
/* bind result variables */
mysqli_stmt_bind_result($stmt, $district);
/* fetch value */
mysqli_stmt_fetch($stmt);
printf("%s is in district %s\n", $city, $district);
/* close statement */
mysqli_stmt_close($stmt);
}
/* close connection */
mysqli_close($link);
?>
El resultado del ejemplo seria:
Amersfoort is in district Utrecht