• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mysqli::stmt_init()

    (PHP 5, PHP 7)

    初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象

    说明

    面向对象风格
    mysqli::stmt_init(void): mysqli_stmt
    过程化风格
    mysqli_stmt_init(mysqli$link): mysqli_stmt

    分配并初始化一个语句对象用于mysqli_stmt_prepare().

    Note:

    任何其后调用的mysqli_stmt函数都会失败直到mysqli_stmt_prepare()被调用.

    参数

    $link

    仅以过程化样式:由mysqli_connect()或mysqli_init()返回的链接标识。

    返回值

    Returns an object.

    参见

    • mysqli_stmt_prepare() Prepare an SQL statement for execution
    stmt_init() seems to clear previous (possibly erroneous) results on the DB connection, which means you don't necessarily need to use it but it could make the code more robust.
    In a PHPUnit test, I had a sequence of prepared queries on the same connection. One of them fetched a row from a SELECT but didn't keep fetching until it drained the connection, so it left some stale results. When the next query did this:
    <?php
    $db = $this->getConnection() >getDbConnection();
    $preparedQuery = $db->prepare ($query);
    ?>
    the prepare() call generated an error: "Could not prepare query: Commands out of sync; you can't run this command now." Changing to this:
    <?php
    $db = $this->getConnection() >getDbConnection();
    $preparedQuery = $db->stmt_init();
    $preparedQuery->prepare ($query);
    ?>
    resolved the problem.
    you can use $stmt = $mysqli->prepare(); directly without stmt-init() . i think there is no need for stmt-init .
    If your sql query has some errors and you don't use stmt_init() before preparing the statement, you won't get error message for wrong sql query.