mysqli::prepare

mysqli_prepare

Prepares an SQL statement for execution

&reftitle.description;

&style.oop;

public ``mysqli_stmt``false```mysqli::prepare` `string` `query`

&style.procedural;

``mysqli_stmt``false```mysqli_prepare` `mysqli` `mysql` `string` `query`

Prepares the SQL query, and returns a statement handle to be used for further operations on the statement. The query must consist of a single SQL statement.

The statement template can contain zero or more question mark (`?`) parameter markers⁠—also called placeholders. The parameter markers must be bound to application variables using `mysqli_stmt_bind_param` before executing the statement.

&reftitle.parameters;

&mysqli.link.description;

`query`

- The query, as a string. It must consist of a single SQL statement.

  The SQL statement may contain zero or more parameter markers represented by question mark (`?`) characters at the appropriate positions.

  The markers are legal only in certain places in SQL statements. For example, they are permitted in the `VALUES()` list of an `INSERT` statement (to specify column values for a row), or in a comparison with a column in a `WHERE` clause to specify a comparison value. However, they are not permitted for identifiers (such as table or column names).

&reftitle.returnvalues;

`mysqli_prepare` returns a statement object or &false; if an error occurred.

&reftitle.errors; &mysqli.conditionalexception;
&reftitle.examples;

### `mysqli::prepare` example

&style.oop;

    <?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->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);

&style.procedural;

    <?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_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);

&examples.outputs;

    Amersfoort is in district Utrecht

&reftitle.seealso;

- `mysqli_stmt_execute`
- `mysqli_stmt_fetch`
- `mysqli_stmt_bind_param`
- `mysqli_stmt_bind_result`
- `mysqli_stmt_get_result`
- `mysqli_stmt_close`