mysqli::stmt_init

mysqli_stmt_init

(PHP 5, PHP 7)

mysqli::stmt_init -- mysqli_stmt_initInitializes a statement and returns an object for use with mysqli_stmt_prepare

Descrierea

Stil obiect-orientat

public mysqli::stmt_init ( ) : mysqli_stmt

Stil procedural

mysqli_stmt_init ( mysqli $link ) : mysqli_stmt

Allocates and initializes a statement object suitable for mysqli_stmt_prepare().

Notă:

Any subsequent calls to any mysqli_stmt function will fail until mysqli_stmt_prepare() was called.

Parametri

link

Numai stilul procedural: Un identificator al legăturii întors de mysqli_connect() sau mysqli_init()

Valorile întoarse

Returns an object.

A se vedea și

add a note add a note

User Contributed Notes 2 notes

up
19
Jeff C
8 years ago
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.
up
5
mamdo7 at hotmail dot com
10 years ago
you can use $stmt = $mysqli->prepare(); directly without stmt-init() . i think there is no need for stmt-init .
To Top