PHP Conference Fukuoka 2025

mysqli::stmt_init

mysqli_stmt_init

(PHP 5, PHP 7, PHP 8)

mysqli::stmt_init -- mysqli_stmt_initInicializa una sentencia MySQL

Descripción

Estilo orientado a objetos

public mysqli::stmt_init(): mysqli_stmt|false

Estilo procedimental

mysqli_stmt_init(mysqli $mysql): mysqli_stmt|false

Asigna e inicializa un objeto de sentencia, para ser utilizado con mysqli_stmt_prepare().

Nota:

Todas las llamadas posteriores a las funciones mysqli_stmt_* fallarán, si mysqli_stmt_prepare() es llamada.

Parámetros

mysql

Solo estilo procedimental: Un objeto mysqli devuelto por mysqli_connect() o mysqli_init()

Valores devueltos

Devuelve un objeto.

Ver también

add a note

User Contributed Notes 2 notes

up
19
Jeff C
9 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
11 years ago
you can use $stmt = $mysqli->prepare(); directly without stmt-init() . i think there is no need for stmt-init .
To Top