mysqli::prepare

mysqli_prepare

(PHP 5, PHP 7)

mysqli::prepare -- mysqli_preparePrepara una sentencia SQL para su ejecución

Descripción

Estilo orientado a objetos

mysqli::prepare ( string $query ) : mysqli_stmt

Estilo por procedimientos

mysqli_prepare ( mysqli $link , string $query ) : mysqli_stmt

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.

Parámetros

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

Valores devueltos

mysqli_prepare() devuelve un objeto de sentencia o FALSE si ocurre un error.

Ejemplos

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

Ver también