mysqli_stmt::prepare

mysqli_stmt_prepare

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::prepare -- mysqli_stmt_preparePrepara una consulta SQL para su ejecución

Descripción

Estilo orientado a objetos

public mysqli_stmt::prepare(string $query): mixed

Estilo procedimental

mysqli_stmt_prepare(mysqli_stmt $statement, string $query): bool

Prepara la consulta SQL query, para la sesión de trabajo stmt.

Las variables SQL deben asociarse a una variable PHP mediante la función mysqli_stmt_bind_param() y/o mysqli_stmt_bind_result(), antes de ejecutar la consulta.

Nota:

Si se pasa una consulta a mysqli_stmt_prepare() que es más larga que max_allowed_packet, los códigos de error devueltos serán diferentes según si se utiliza MySQL Native Driver (mysqlnd) o MySQL Client Library (libmysqlclient). El comportamiento se define como sigue:

  • mysqlnd en Linux devuelve un código de error 1153. El mensaje de error será got a packet bigger than max_allowed_packet bytes.

  • mysqlnd en Windows devuelve un código de error 2006. El mensaje será del tipo server has gone away.

  • libmysqlclient en cualquier plataforma devuelve el código de error 2006. El mensaje será del tipo server has gone away.

Parámetros

statement

Solo estilo procedimental: Un objeto mysqli_stmt devuelto por mysqli_stmt_init().

query

La consulta, en forma de string. Debe consistir en un comando SQL válido y único.

Este argumento puede incluir una o más variables SQL, utilizando signos de interrogación (?) en los lugares adecuados.

Nota:

Los marcadores están permitidos únicamente en ciertos lugares de las consultas SQL. Por ejemplo, lo están en la lista VALUES() de una consulta INSERT (para especificar los valores de las columnas para una fila), o en una comparación de una cláusula WHERE para especificar un valor de comparación. Sin embargo, no están permitidos para los identificadores (de tablas o columnas).

Valores devueltos

Esta función retorna true en caso de éxito o false si ocurre un error.

Errores/Excepciones

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.

Ejemplos

Ejemplo #1 Ejemplo para mysqli_stmt::prepare()

Estilo orientado a objetos

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$city = "Amersfoort";

/* create a prepared statement */
$stmt = $mysqli->stmt_init();
$stmt->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);

Estilo procedimental

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

$city = "Amersfoort";

/* create a prepared statement */
$stmt = mysqli_stmt_init($link);
mysqli_stmt_prepare($stmt, "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);

Los ejemplos anteriores mostrarán :

Amersfoort is in district Utrecht

Ver también